根据this passage的说法,IO多路复用可以在阻塞和非阻塞模式下使用文件描述符:

非阻塞模式只需要配合边缘触发模式:

更重要的是,根据this answer的说法,Java NIO在杠杆触发模式下工作。
那么为什么Java NIO Selector要求通道处于非阻塞模式:

感谢您的提前回复。
发布于 2020-09-12 19:45:28
java.nio和Channel的强大之处在于您可以以非阻塞方式监视多个套接字。换句话说,传统的java.io是一种阻塞IO调用的single-thread / single-socket方法,而java.nio意味着您可以在不需要数千个线程的情况下产生数千个套接字连接(通过通道和选择器)。在这里,选择器的工作是帮助你的线程/线程池从准备好并连接的通道进行读写。
Java Docs for Channel将其定义为
定义通道,表示到能够执行I/O操作的实体(如文件和套接字)的连接;定义选择器,用于多路复用的非阻塞I/O操作
https://stackoverflow.com/questions/63856618
复制相似问题