Java BIO & NIO

作者: packet | 来源:发表于2018-07-20 19:54 被阅读87次

该模式有两个大的缺点:

1)一个线程对应一个连接,这样会导致线程过多。

2)当客户端没有数据发送时,服务器线程会阻塞。(in.readLine()方法会阻塞)

一个IO线程通过Selector管理多个线程的连接,多个线程的socket会向Selector注册。Selector最终决定哪一个socket准备执行IO,因为线程的IO模式是非阻塞的。NIO优于BIO的原因:

  1. 用较少的线程处理连接,节约了内存并且减少了线程上下文切换。
  2. 当没有IO处理时,线程不会阻塞,而是处理其他请求


    PS:以上图片出自《Netty in Action》以及Java NIO vs. IO

2018-01-03阅:

服务器端的NIO有两种模型:select和epoll


select epoll

epoll更高效,因为它不需要遍历所有的socket,只需要处理需要操作的socket

参考资料:Http Server : 一个差生的逆袭

相关文章

网友评论

    本文标题:Java BIO & NIO

    本文链接:https://www.haomeiwen.com/subject/ujoqmftx.html