java selector 源码_13. 《Java源码解析》之NIO的Selector机制(Part1:Selector.open())

本文详细介绍了Java NIO中的Selector机制,从Selector.open()函数入手,分析了SelectorProvider如何获取系统默认的SelectorProvider,如在MacOSX上为KQueueSelectorProvider。接着探讨了Selector的创建过程,涉及Native方法和管道的使用,为理解NIO的Selector工作原理提供了深入洞察。
摘要由CSDN通过智能技术生成

Selector机制之Selector.open()函数的解析

在NIO中我们一般都是Channel与Selector配合使用的,一般情况下使用的方法如下:

//打开Selector来处理channel

Selector selector = Selector.open();

//将channel注册到selector中,并将channel设置成等待新的连接

serverChannel.register(selector,SelectionKey.OP_ACCEPT);

//等待处理新的事件;一直阻塞直到下一个事件到来才唤醒.此方法执行处于阻塞模式的选择操作。仅在至少选择一个通道、调用此选择器的 wakeup 方法,或者当前的线程已中断(以先到者为准)后此方法才返回。

selector.select();

这篇博客我们主要从Selector.open()函数开始,一步步分析Selector机制。

首先我们进入Selector.open();函数,在JDK源码中定义如下:

public static Selector open() throws IOException {

return SelectorProvider.provider().openSelector();

}

查看这个函数的doc文档注释:

The new selector is created by invoking the openSelector method of the system-wide default SelectorProvider object.

意思是:通过调用系统默认的SelectorProvider(这里不同的系统会有不同的SelectorProvider实现类)的openSelector()方法来创建新的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值