java nio 的 selector 选择器, 由Java SPI (Service Provider Interface) 方式, 通过 provider 提供者设计模式进行创建
Provider 设计模式是一种用于创建对象的设计模式,
它有助于降低代码的耦合性,增强可维护性,并使代码更具灵活性。
这种模式通常在 Java 中用于实现依赖注入或服务定位
调用SelectorProvider#provider(), 以获得提供者
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
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 删除。