我的理解是,在Linux的最新版本中,默认选择器是一个使用epoll实现的类,而在旧版本(旧内核?我不确定),使用select或poll-的类使用基于实现。
根据文档,也可以设置java.nio.channels.spi.SelectorProvider属性来覆盖默认的选择器类。
是否可以通过将属性设置为提供的(但非默认的)类的名称来强制执行非epoll实现? 哪些类作为标准java库的一部分提供,可以充当选择器?
最终的计划在跨平台上运作并不重要。这仅用于比较受控环境中两种实现之间的性能。
答案 0 :(得分:0)
每个JRE只有一个Selector
实现。您无法组合或替换它们,除非您自己编写,然后您无法使用默认提供商的SocketChannels
,因此您可以同样实现这些,ServerSocketChannels
等。