Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaNIO为什么选择器必须在非阻塞模式下使用通道?_Java_Nio_Epoll - Fatal编程技术网

JavaNIO为什么选择器必须在非阻塞模式下使用通道?

JavaNIO为什么选择器必须在非阻塞模式下使用通道?,java,nio,epoll,Java,Nio,Epoll,根据,IO多路复用可以在阻塞和非阻塞模式下与文件描述符一起工作: 非阻塞模式仅需与边缘触发模式配合: 此外,据介绍,JavaNIO在杠杆触发模式下工作 那么为什么Java NIO选择器要求通道处于非阻塞模式: 感谢您提前回复。java.nio和频道的强大之处在于您可以以非阻塞方式监视多个套接字。换句话说,传统的java.io是一种阻止io调用的单线程/单套接字方法,而java.nio的用途是可以产生数千个套接字连接(通过通道和选择器),而不需要数千个线程。这里,选择器的工作是帮助您的线程/

根据,IO多路复用可以在阻塞和非阻塞模式下与文件描述符一起工作:

非阻塞模式仅需与边缘触发模式配合:

此外,据介绍,JavaNIO在杠杆触发模式下工作

那么为什么Java NIO选择器要求通道处于非阻塞模式:


感谢您提前回复。

java.nio和
频道的强大之处在于您可以以非阻塞方式监视多个套接字。换句话说,传统的
java.io
是一种阻止io调用的
单线程/单套接字
方法,而
java.nio
的用途是可以产生数千个套接字连接(通过通道和选择器),而不需要数千个线程。这里,选择器的工作是帮助您的线程/线程池从准备就绪且已连接的通道进行读写

Java Docs for Channel将其定义为:

定义通道,这些通道表示到以下实体的连接: 能够执行I/O操作,如文件和套接字; 定义选择器,用于多路复用、非阻塞I/O操作


没有回答问题。在阻塞模式下使用选择器是很有问题的。JavaNIO设计者可能选择回避整个问题。