NIO的非阻塞式网络通信

阻塞与非阻塞:

虚拟内存被操作系统划分成两块:内核空间和用户空间,内核空间是内核代码运行的地方,用户空间是用户程序代码运行的地方。当进程运行在内核空间时就处于内核态,当进程运行在用户空间时就处于用户态。

服务端会判断内核地址空间有没有数据,如果没有数据的话,此时的服务端就处于等待状态。

后来,我们想到使用多线程,虽然能够提高CPU资源的利用率,但是多线程的总的数量毕竟是有限的,当大量读写请求过来的时候,任然会有部分出现阻塞的情况发生。

随着进一步的发展,我们开始使用选择器:

原文地址:https://www.cnblogs.com/dongyaotou/p/14423899.html