【问题标题】:Why custom NIO Selector Provider?为什么要自定义 NIO Selector Provider?
【发布时间】:2011-03-10 14:06:16
【问题描述】:

有谁知道为什么我们需要在 java NIO 中使用自定义选择器提供程序。有没有人使用过自定义选择器提供程序,您为什么要这样做?

【问题讨论】:

  • 我真的看不出任何意义。但是,有些人可能出于某种原因想要创建一个更优化的Selector。老实说,我不知道。
  • @Gnarly 感谢您的意见

标签: java selector nio


【解决方案1】:

我写了一个来提供 SSLSocketChannels 和 SSLServerSocketChannels(和 SSLSelectors ...)。我也可以想象写一个来提供代理,因为 java.nio 根本不支持 java.net.Proxy 等。

【讨论】:

  • 拜托,你有什么例子吗?我可能需要一个自定义提供程序来提供 SerialPortChannels。
  • @ThibautD。为什么需要一个例子?只需扩展 SPI 类并实现抽象方法即可。
  • 不清楚我应该如何实现 openServerSocketChannel 或 openPipe 之类的功能...我需要“扩展”默认提供程序,可能没有实现完整的提供程序。
【解决方案2】:

模拟实现。

针对使用 NIO 的代码编写单元测试非常有用。否则,模拟各种网络故障可能会很棘手。

【讨论】:

    【解决方案3】:

    在撰写本文时,JDK 16(抢先体验)为 epollpoll 提供了 SelectorProviders。 Linux 内核 5.1+ 提供了io_uring,据称它比epoll 更高效、更灵活。

    能够通过系统属性或通过 ServiceLoader 使用自定义 SelectorProvider 使得即使在旧 JVM 上也可以使用 io_uring。

    到目前为止,我还没有找到任何开源实现!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-16
      • 2020-12-30
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多