2022 flag 150编文章 - 005 java 网络编程

鸡汤一碗

当你遇到一件事,感觉无法解决,甚至已经影响到你生活和心情时,何不停下脚步,多些冷静,多些思考,换个角度,换个空间,换种方法,换个思路,也许事情会简单许多。一昧原地踏步、绕圈或太执着,只会让自己陷入痛苦深渊。生命总有挫折,但那不是尽头,只是在提醒你:该转弯了!

大纲

 1. 阻塞I/O, 非阻塞I/O 

 2. 多路复用I/O模型

 3. Java NIO

知识点

 1. 阻塞I/O, 非阻塞I/O 

阻塞IO与非阻塞IO区别请求IO内核是否会立刻返回、用户线程是否会挂起。阻塞:用户线程向内核发出I/O请求,然后用户线程挂起、等待I/O请求结果; 非阻塞:用户线程向内核发出I/O请求,内核立刻返回、用户线程不会挂起。 但是它并不知道这个IO操作是否真的成功了,为了知道IO操作是否成功,一般有两种策略:一是需要应用程序主动地循环地去问kernel(这种方法就是同步非阻塞IO);二是采用I/O通知机制

阻塞模型图 

 

 

 非阻塞模型图 

 

 

 2. 多路复用I/O模型

 select 线程轮询多个socket状态,只有socket有IO读写事件,才通知用户线程进行IO读写操作。

 

 

 3. Java NIO

 3个关键词: Selector(选择器)、Channel(通道)、Buffer(缓存区)

 Selector 

 

 

Buffer 

 

 

 

 

实操

 无

总结

 无

posted @ 2022-01-26 14:40  路途遥远  阅读(23)  评论(0编辑  收藏  举报