A
Socket是阻止输入/输出设备。
Thread如果基础缓冲区已满,它将使正在使用它的阻止读取,甚至可能阻止写入。因此,如果服务器具有一堆open,则必须创建一堆不同的线程
Socket。
A
SocketChannel是从套接字读取数据的一种非阻塞方式,因此您可以让一个线程立即与一堆打开的连接进行通信。通过在上添加一堆
SocketChannels
Selector,然后循环使用选择器的
select()方法,该方法可以通知您套接字是否已被接受,已接收数据或已关闭。这使您可以在一个线程中与多个客户端进行通信,而不必承担多个线程和同步的开销。
Buffers是NIO的另一个功能,它使您可以通过读取和写入访问基础数据,从而避免了将数据复制到新阵列中的开销。



