小编典典

那么,实际上什么是“非阻塞异步IO”?

要回答这个问题,您必须首先了解没有 阻塞异步I / O 这样的事情。异步的概念要求没有等待,没有阻塞,没有延迟。当您看到 非阻塞异步I / O时 ,

非阻塞 位仅用于进一步限定该术语中的 异步 形容词。如此有效地, 非阻塞异步I / O 可能有点冗余。

I / O主要有两种。 同步 和 异步 。 同步会阻塞当前执行线程,直到处理完成为止 ,而

异步不会阻塞当前执行线程,而是将控制权传递给OS内核进行进一步处理。 然后,当提交的任务完成时,内核会通知异步线程

异步通道组

Java中的异步通道的概念由异步通道组支持。异步通道组基本上会汇集多个通道以供重用。异步api的使用者从组中检索一个通道(JVM默认情况下会创建一个通道),并且该通道在完成其读/写操作后会自动将其自身放回到该组中。最终,异步通道组由支持

惊喜 ,线程池。同样,异步通道也是线程安全的。

支持异步通道组的线程池的大小由以下JVM属性配置

java.nio.channels.DefaultThreadPool.initialSize

给定一个整数值,它将设置该大小的线程池,以支持通道组。渠道组的创建和维护对开发者是透明的。

以及如何用Java实现它们

好吧,很高兴你问。这是一个示例AsynchronousSocketChannel(用于向Socket侦听服务器打开非阻塞客户端。)此示例摘自Apress

Pro Java NIO.2,我对此进行了评论:

//Create an Asynchronous channel. No connection has actually been established yet

AsynchronousSocketChannel asynchronousSocketChannel = AsynchronousSocketChannel.open();

/**Connect to an actual server on the given port and address.

The operation returns a type of Future, the basis of the all

asynchronous operations in java. In this case, a Void is

returned because nothing is returned after a successful socket connection

*/

Void connect = asynchronousSocketChannel.connect(new InetSocketAddress("127.0.0.1", 5000)).get();

//Allocate data structures to use to communicate over the wire

ByteBuffer helloBuffer = ByteBuffer.wrap("Hello !".getBytes());

//Send the message

Future successfullyWritten= asynchronousSocketChannel.write(helloBuffer);

//Do some stuff here. The point here is that asynchronousSocketChannel.write()

//returns almost immediately, not waiting to actually finish writing

//the hello to the channel before returning control to the currently executing thread

doSomethingElse();

//now you can come back and check if it was all written (or not)

System.out.println("Bytes written "+successfullyWritten.get());

编辑:我应该提到对异步NIO的支持来自JDK 1.7

2020-09-16

java 异步 阻塞io_非阻塞IO与异步IO以及Java实现相关推荐

  1. 文件异步io java,漫画图解java开发之IO阻塞、非阻塞、同步、异步

    周末在家加班,正在疯狂的撸代码,女朋友很开心的跑过来,手里拿着他刚刚画好的一副漫画. 同步.异步.阻塞.非阻塞都是和IO(输入输出)有关的概念.最简单的文件读取就是IO操作.而在文件读取这件事儿上,可 ...

  2. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...

  3. IO:同步,异步,阻塞,非阻塞

    IO - 同步,异步,阻塞,非阻塞 都是老生常谈的东西,多通读几遍,理解透彻! 实际上同步与异步是针对应用程序与内核的交互而言的.同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看 ...

  4. IO中的阻塞、非阻塞、同步、异步概念分析详解

    目录 1.什么是I/O编程 2.阻塞.非阻塞.同步.异步分析 2.1 什么是同步.异步 2.2 什么是阻塞和非阻塞 2.3 阻塞.非阻塞和同步.异步的区别 2.4 编程实现 3.参考文献 1.什么是I ...

  5. setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞

    同步/异步.阻塞/非阻塞 说的是一回事儿吗? 同步/异步.阻塞/非阻塞 你能通俗易懂的讲清楚吗? Java 中的 BIO.NIO.AIO 你了解吗? Socket 编程你还会吗? Linux 操作系统 ...

  6. java同步,异步和阻塞,非阻塞的联系和区别

    http://www.iteye.com/topic/1131578#2399581 http://www.ibm.com/developerworks/cn/linux/l-async/ https ...

  7. JAVA 中IO总结 之前篇阻塞、非阻塞

    最近总结JAVA中的IO,遇到了有关阻塞.非阻塞.同步.异步的概念,之前也做个内核有关开发,今天温故而知新. Linux支持同步IO,也支持异步IO,因此分为同步阻塞.同步非阻塞,异步阻塞,异步非阻塞 ...

  8. 【好记性不如烂笔头】IO之深入理解同步、异步、阻塞、非阻塞

    IO之深入理解同步.异步.阻塞.非阻塞 一.什么是同步? 二.什么是异步? 什么是阻塞? 什么是非阻塞? 总结 一.什么是同步? 先简单画一个图再解释: 我打算做番茄炒蛋,于是我去街上买点西红柿买点鸡 ...

  9. 什么是IO多路复用_IO多路复用同步异步阻塞和非阻塞

    转自:http://www.elecfans.com/baike/wangluo/fuyongqi/20180307644141.html 一.什么是socket? 我们都知道unix(like)世界 ...

最新文章

  1. python文件信息排序_python文件排序的方法总结
  2. windows平台安装php_memcache模块
  3. vue php tree,Vue 实现树形视图数据功能
  4. iPhone 12 Pro Max外形、配置大曝光:安卓基本没对手了
  5. 面对海量请求,缓存设计还应该考虑哪些问题?(转)
  6. dhcp服务器分配指定ip,DHCP服务(自动分配IP、绑定固定IP)
  7. 软件测试:homework2
  8. 找出唯一出现一次的数
  9. CentOS 7安装java及其配置
  10. 如何进行业务需求分析
  11. 叶笑嘴角露出来一个不知是什么意味的笑容
  12. html标签对应的英文原文,[转载]片尾字幕中英文对照
  13. 在Word中,如何删除页眉页脚
  14. linux sftp 重命名,SFTP对文件重命名 删除 退出 查看
  15. jvm的类加载和运行时数据区和垃圾回收
  16. 有没有什么简单好用的录音软件?
  17. 细菌(disease)解题报告 - 搜索与回朔
  18. MYsql膳食健康系统_360Health
  19. 打不开win10自带计算器和防火墙、应用商店闪退及误删等问题解决
  20. 资产管理系统是管钱的吗?不完全对

热门文章

  1. 词汇的积累与遣词造句 —— 准确的表达、新鲜的词汇
  2. 中英文对照 —— 战争与军事
  3. 说文解字 —— 汉字的构成及语义的变化
  4. selenium python 文本框输入信息_selenium python向富文本框中输入内容
  5. python开发软件的实例-Python 开发工具和框架安装实例步骤
  6. python从入门到放弃-掌握这个学习方法,让 Python 不再从入门到放弃
  7. python有趣的代码-趣味至上主义:这5个有趣的Python库带你花式编码
  8. python日常能做什么-为什么Python这么火?看看它能做什么你就知道了
  9. 零基础学python书籍-0基础学python,有什么教程或者书可以推荐吗?
  10. python发音1001python发音-怎样才能写出 Pythonic 的代码 #P1001#