Board logo

标题: 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