有谁知道为什么我们需要java NIO中的自定义选择器提供程序。有没有人使用过自定义选择器提供程序,为什么要这样做?
答案 0 :(得分:4)
我写了一个提供SSLSocketChannels和SSLServerSocketChannels(以及SSLSelectors ...)。我也可以想象写一个提供代理,因为java.nio中根本不支持java.net.Proxy等。
答案 1 :(得分:2)
模拟实施。
对使用NIO的代码编写单元测试非常有用。否则,模拟各种网络故障可能会很棘手。
答案 2 :(得分:0)
在撰写本文时,JDK 16(早期访问)为epoll
和poll
提供了SelectorProviders。 Linux内核5.1+提供了io_uring
,它比epoll
具有更高的性能和灵活性。
能够通过系统属性或ServiceLoader使用自定义的SelectorProvider,即使在旧的JVM上也可以使用io_uring。
到目前为止,我还找不到任何开源实现!