gpt4 book ai didi

Java NIO 为什么 Selector 必须以非阻塞模式与 Channel 一起工作?

转载 作者:行者123 更新时间:2023-12-05 08:05:43 24 4
gpt4 key购买 nike

根据 this passage ,IO 多路复用可以在阻塞和非阻塞模式下使用文件描述符: enter image description here

而非阻塞模式只需要配合边沿触发模式即可: enter image description here

此外,根据this answer , Java NIO工作在杠杆触发模式。

那为什么Java NIO Selector要求 channel 是非阻塞模式: enter image description here

提前感谢您的回复。

最佳答案

java.nioChannel 的强大之处在于您可以以非阻塞方式监视多个套接字。换句话说,传统的 java.io 是一种单线程/单套接字 阻塞 IO 调用的方法,而 java.nio 是意味着您可以在不需要数千个线程的情况下产生数千个套接字连接(通过 channel 和选择器)。这里选择器的工作是帮助您的线程/线程池从准备好并连接的 channel 读取和写入。

Java Docs for Channel 将其定义为,

Defines channels, which represent connections to entities that arecapable of performing I/O operations, such as files and sockets;defines selectors, for multiplexed, non-blocking I/O operations

关于Java NIO 为什么 Selector 必须以非阻塞模式与 Channel 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63856618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com