java Nio之阻塞式和非阻塞式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyzx_in_csdn/article/details/83039073

IO的阻塞和非阻塞都是相对于网络IO而言的

1、阻塞式

在Client/Server模型下,当客户端有一个请求到服务端的时候,服务端的一个线程用来处理这个请求,
当客户端的请求的写操作的时候,是先通过网络把数据写到服务器的操作系统的内存里(内核空间),
然后服务器操作系统再把数据拷贝到对应的应用程序的内从中,当请求的写数据还没有到达服务器时,
处理这个请求的线程就一直在等待,这就是传统的阻塞式

   

2、非阻塞式

在java1.4提出来NIO ,NIO中有一个Selector的概念,当某一个请求(NIO中抽象为Channel)到达服务器时,
服务器把这个Channel注册到Selector上,当请求的写数据准备完毕了,
Selector就把这个Channel交给一个或者多个线程处理,在数据到达之前服务器的线程是自由的,
不用等待,这就是非阻塞

猜你喜欢

转载自blog.csdn.net/lyzx_in_csdn/article/details/83039073