![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NIO
wshello
这个作者很懒,什么都没留下…
展开
-
NIO在网络服务器中的样例
jdk供的无阻塞I/O(NIO)有效解决了多线程服务器存在的线程开销问题,但在使用上略显得复杂一些。在NIO中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个CPU的处理能力和处理中的等待时间,达到提高服务能力的目的。 这段时间在研究NIO,写篇博客来记住学过的东西。还是从最简单的Hello World开始, client多线程请转载 2012-03-10 08:08:34 · 1611 阅读 · 0 评论 -
Java NIO之选择就绪模式
Java NIO出现不只是一个技术性能的提高,你会发现网络上到处在介绍它,因为它具有里程碑意义,从JDK1.4开始,Java开始提高性能相关的功能,从而使得Java在底层或者并行分布式计算等操作上已经可以和C或Perl等语言并驾齐驱。 Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道转载 2012-03-10 05:45:51 · 2106 阅读 · 0 评论 -
Reactor模式和NIO
当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作。他们都有一个共同的结构: 1. Read request 2. Decode request 3. Process service 4. Encode reply 5. Send reply 经典的网络服务的设计如下图,在每个线程中完成对数据的处理: 但这种模式在用户负载增加时,性能转载 2012-03-10 08:49:04 · 1557 阅读 · 0 评论 -
NIO的另类看法---NIO没有什么作用
很简单 100个请求过来了,每个请求都会有三个事件 ,accept,read writem ,如果只有一个主线程轮训,每遍历到一个事件都得线性的去处理他,等处理完了再处理第二个时间,如果有个write的写操作要写很多数据,那也得等这个write写完了再处理下一个, 要改善这种情况,还得用一个新线程去处理,或是线程池任务队列之类的处理也好,这样就不至于非得等到上一个事件处理完,那这样又回到了之前的转载 2012-03-10 08:35:49 · 1679 阅读 · 0 评论 -
NIO存在的问题
我个人的理解,由于“NIO socket”的实现主体上一般为一个线性的处理过程。所以只适合做 “请求 —— 响应 ”式的网络连接。也就是说客户端必须向服务器发送一个请求, 服务器才能响应给客户端数据。这种场景比较典型就是web服务器。 但对于由服务器主动发起的信息的服务则无从下手,比如说一个在线游戏服务器。服务器端常常需要向所有在线用户发送同步数据信息。类似此种服务只能由传统的 “多线程IO so转载 2012-03-10 07:57:07 · 1651 阅读 · 0 评论