当前位置: 首页 > 知识库问答 >
问题:

Java NIO为什么选择器必须在非阻塞模式下与通道一起工作?

吕自怡
2023-03-14

此外,根据这个答案,Java NIO在杠杆触发模式下工作。

感谢您提前回复。

共有1个答案

傅献
2023-03-14

java的力量。nio和通道来自这样一个事实,即您可以以非阻塞的方式监视多个套接字。换句话说,传统的java。io是一种阻止io调用的单线程/单套接字方法,而java。nio的用途是可以产生数千个套接字连接(通过通道和选择器),而不需要数千个线程。这里,选择器的工作是帮助您的线程/线程池读取

Java Docs for Channel将其定义为,

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

 类似资料:
  • 默认情况下,通道发送和接收数据是阻塞的。然而我们可以使用select的一个default的选项来实现无阻塞发送或接收数据,甚至可以将多个select的case选项和default选项结合起来使用。 package main import "fmt" func main() { messages := make(chan string) signals := make(chan bo

  • 问题内容: Java NIO提供并可以将其设置为非阻塞模式(异步)。大多数操作返回的值对应于成功或该操作尚未完成。是什么目的,并随后,除了回调的功能? 问题答案: 可以设置为非阻塞模式(异步) 就在那里,您有误解。非阻塞模式 不同于 异步模式。 非阻塞操作要么传输数据,要么不传输数据。无论哪种情况,都没有阻塞,并且返回操作完成。此模式受 和支持 异步操作在您调用该方法时开始,并在后台继续,其结果可

  • 我目前正在尝试从一个线程操作一个SocketChannel(我以前用两个线程和常规套接字实现了我想要做的事情,但每个客户端两个线程似乎有点过分)。我希望能够在有数据要读取时读取(选择器可以很好地工作)。我只想在阻塞队列(在我的示例中,我有帧队列)中有项目时写入。 现在,它做的是,它不停地疯狂地循环,这显然很糟糕。我正在寻找一种方法,当我的阻塞队列中有一个项目,或者有字节要读取时,我可以唤醒选择器。

  • 本文向大家介绍请你说一下阻塞,非阻塞,同步,异步相关面试题,主要包含被问及请你说一下阻塞,非阻塞,同步,异步时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 阻塞和非阻塞:调用者在事件没有发生的时候,一直在等待事件发生,不能去处理别的任务这是阻塞。调用者在事件没有发生的时候,可以去处理别的任务这是非阻塞。 同步和异步:调用者必须循环自去查看事件有没有发生,这种情况是同步。调用者不用自己去查看

  • 问题内容: 我有这段代码可以在Linux中从Serial读取,但是我不知道在读取SerialPort时阻塞和非阻塞之间有什么区别,在哪种情况下哪个更好? 问题答案: 您提到的代码是IMO编码和注释不当的代码。该代码不符合POSIX的可移植性惯例,如正确设置终端模式和POSIX操作系统的串行编程指南中所述。该代码没有提到它使用非规范(也称为原始)模式,并且重用了“阻塞”和“非阻塞”术语来描述 VMI

  • 正如您在代码中所看到的,我希望“&”指的是“.app”,因为它在其他地方以及node_sass中都起作用。 这是样式化组件中的一个bug还是我遗漏了什么?下面是复制问题的codesandbox链接:- https://codesandbox.io/s/jolly-visvesvaraya-ibjd8?file=/src/app.js