前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >netty之selector与selectorProvider

netty之selector与selectorProvider

原创
作者头像
spbreak
修改2023-09-04 07:58:15
2121
修改2023-09-04 07:58:15
举报
文章被收录于专栏:nettynetty
selector与selectorProvider之间关系
selector与selectorProvider之间关系
创建Selector流程
创建Selector流程

java nio 的 selector 选择器, 由Java SPI (Service Provider Interface) 方式, 通过 provider 提供者设计模式进行创建

代码语言:txt
复制
Provider 设计模式是一种用于创建对象的设计模式,
它有助于降低代码的耦合性,增强可维护性,并使代码更具灵活性。
这种模式通常在 Java 中用于实现依赖注入或服务定位

调用SelectorProvider#provider(), 以获得提供者

  • AccessController : 进入安全管理的特权模式, 以便读写文件
  • 通过属性加载提供者
  • 通过Service实现加载提供者
  • 通过默认实现选择器提供者, 创建提供者
代码语言:javascript
复制
public static SelectorProvider provider() {
        synchronized (lock) {
            if (provider != null)
                return provider;
            return AccessController.doPrivileged(  // 进入安全管理的特权模式, 以便读写文件
                    new PrivilegedAction<SelectorProvider>() {
                        public SelectorProvider run() {
                            if (loadProviderFromProperty()) // 通过属性加载提供者
                                return provider;
                            if (loadProviderAsService()) // 通过Service实现加载提供者
                                return provider;
                            provider = isun.nio.ch.DefaultSelectorProvider.create (); // 通过默认实现选择器提供者, 创建提供者
                            return provider;
                        }
                    });
        }
    }

WindowsSelectorProdvider#openSelector()

通过上面获得的提供者provider, 创建选择器 selector

代码语言:javascript
复制
public class WindowsSelectorProvider extends SelectorProviderImpl {
    public WindowsSelectorProvider() {
    }
    
    // 获得选择器
    public AbstractSelector openSelector() throws IOException {
        return new WindowsSelectorImpl(this);
    }

    @Override
    public String toString() {
        return "i-自定义WindowsSelectorProvider";
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档