java 异步 阻塞io_非阻塞IO与异步IO以及Java实现
小编典典
那么,实际上什么是“非阻塞异步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实现相关推荐
- 文件异步io java,漫画图解java开发之IO阻塞、非阻塞、同步、异步
周末在家加班,正在疯狂的撸代码,女朋友很开心的跑过来,手里拿着他刚刚画好的一副漫画. 同步.异步.阻塞.非阻塞都是和IO(输入输出)有关的概念.最简单的文件读取就是IO操作.而在文件读取这件事儿上,可 ...
- python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...
python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...
- IO:同步,异步,阻塞,非阻塞
IO - 同步,异步,阻塞,非阻塞 都是老生常谈的东西,多通读几遍,理解透彻! 实际上同步与异步是针对应用程序与内核的交互而言的.同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看 ...
- IO中的阻塞、非阻塞、同步、异步概念分析详解
目录 1.什么是I/O编程 2.阻塞.非阻塞.同步.异步分析 2.1 什么是同步.异步 2.2 什么是阻塞和非阻塞 2.3 阻塞.非阻塞和同步.异步的区别 2.4 编程实现 3.参考文献 1.什么是I ...
- setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞
同步/异步.阻塞/非阻塞 说的是一回事儿吗? 同步/异步.阻塞/非阻塞 你能通俗易懂的讲清楚吗? Java 中的 BIO.NIO.AIO 你了解吗? Socket 编程你还会吗? Linux 操作系统 ...
- java同步,异步和阻塞,非阻塞的联系和区别
http://www.iteye.com/topic/1131578#2399581 http://www.ibm.com/developerworks/cn/linux/l-async/ https ...
- JAVA 中IO总结 之前篇阻塞、非阻塞
最近总结JAVA中的IO,遇到了有关阻塞.非阻塞.同步.异步的概念,之前也做个内核有关开发,今天温故而知新. Linux支持同步IO,也支持异步IO,因此分为同步阻塞.同步非阻塞,异步阻塞,异步非阻塞 ...
- 【好记性不如烂笔头】IO之深入理解同步、异步、阻塞、非阻塞
IO之深入理解同步.异步.阻塞.非阻塞 一.什么是同步? 二.什么是异步? 什么是阻塞? 什么是非阻塞? 总结 一.什么是同步? 先简单画一个图再解释: 我打算做番茄炒蛋,于是我去街上买点西红柿买点鸡 ...
- 什么是IO多路复用_IO多路复用同步异步阻塞和非阻塞
转自:http://www.elecfans.com/baike/wangluo/fuyongqi/20180307644141.html 一.什么是socket? 我们都知道unix(like)世界 ...
最新文章
- python文件信息排序_python文件排序的方法总结
- windows平台安装php_memcache模块
- vue php tree,Vue 实现树形视图数据功能
- iPhone 12 Pro Max外形、配置大曝光:安卓基本没对手了
- 面对海量请求,缓存设计还应该考虑哪些问题?(转)
- dhcp服务器分配指定ip,DHCP服务(自动分配IP、绑定固定IP)
- 软件测试:homework2
- 找出唯一出现一次的数
- CentOS 7安装java及其配置
- 如何进行业务需求分析
- 叶笑嘴角露出来一个不知是什么意味的笑容
- html标签对应的英文原文,[转载]片尾字幕中英文对照
- 在Word中,如何删除页眉页脚
- linux sftp 重命名,SFTP对文件重命名 删除 退出 查看
- jvm的类加载和运行时数据区和垃圾回收
- 有没有什么简单好用的录音软件?
- 细菌(disease)解题报告 - 搜索与回朔
- MYsql膳食健康系统_360Health
- 打不开win10自带计算器和防火墙、应用商店闪退及误删等问题解决
- 资产管理系统是管钱的吗?不完全对
热门文章
- 词汇的积累与遣词造句 —— 准确的表达、新鲜的词汇
- 中英文对照 —— 战争与军事
- 说文解字 —— 汉字的构成及语义的变化
- selenium python 文本框输入信息_selenium python向富文本框中输入内容
- python开发软件的实例-Python 开发工具和框架安装实例步骤
- python从入门到放弃-掌握这个学习方法,让 Python 不再从入门到放弃
- python有趣的代码-趣味至上主义:这5个有趣的Python库带你花式编码
- python日常能做什么-为什么Python这么火?看看它能做什么你就知道了
- 零基础学python书籍-0基础学python,有什么教程或者书可以推荐吗?
- python发音1001python发音-怎样才能写出 Pythonic 的代码 #P1001#