Java NIO选择器是否默认使用事件通知?

Java NIO选择器是否默认使用事件通知?,java,events,nio,kqueue,Java,Events,Nio,Kqueue,我发现OpenJDK在linux上使用epoll,但是有人知道选择器实现是否使用kqueue、dev/poll等而不是传统的轮询吗?是的。java.nio.channels.Selector.open()根据底层操作系统返回不同的实现。例如,如果您使用sun/oracle的JRE,您将获得: Windows sun.nio.ch.WindowsSelectorImpl Mac OS sun.nio.ch.KQueueSelectorImpl Linux sun.nio.ch.EPoll

我发现OpenJDK在linux上使用epoll,但是有人知道选择器实现是否使用kqueue、dev/poll等而不是传统的轮询吗?

是的。java.nio.channels.Selector.open()根据底层操作系统返回不同的实现。例如,如果您使用sun/oracle的JRE,您将获得:

Windows 
sun.nio.ch.WindowsSelectorImpl

Mac OS 
sun.nio.ch.KQueueSelectorImpl

Linux 
sun.nio.ch.EPollSelectorImpl

Solaris
sun.nio.ch.PollSelectorImpl

Java7更新:也就是说:与本机IOCP相比,windows部分速度非常慢。windows选择器不能选择超过1024个频道,因此速度非常慢。。。如果可能,在windows下使用AIO