标题:
IO的阻塞与非阻塞、同步与异步以及Java网络IO交互方式(6)
[打印本页]
作者:
yuyang911220
时间:
2015-11-21 16:54
标题:
IO的阻塞与非阻塞、同步与异步以及Java网络IO交互方式(6)
使用2个客户端连接,这次没有阻塞,成功的收到了2个客户端的消息。
收到了socket:/127.0.0.1:55707
收到了socket:
/127.0.0.1:55708
收到消息hello
!
收到消息hello
!
在单个线程处理中,我人为的使单个线程read后阻塞5秒,就像前面说的,出现阻塞也只是在单个线程中,没有影响到另一个客户端的处理。
这种阻塞IO的解决方案在大部分情况下是适用的,在出现NIO之前是最通常的解决方案,Tomcat里阻塞IO的实现就是这种方式。但是如果是大量的长连接请求呢?不可能创建几百万个线程保持连接。再退一步,就算线程数不是问题,如果这些线程都需要访问服务端的某些竞争资源,势必需要进行同步操作,这本身就是得不偿失的。
非阻塞IO + IO multiplexing
Java从1.4开始提供了NIO工具包,这是一种不同于传统流IO的新的IO方式,使得Java开始对非阻塞IO支持;
NIO并不等同于非阻塞IO
,只要设置Blocking属性就可以控制阻塞非阻塞。至于NIO的工作方式特点原理这里一概不说,以后会写。模式如下图:
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0