08、Netty源码分析:NioEventLoop.selector

本文深入剖析Netty中NioEventLoop创建Selector的核心方法openSelector,详解WEPollSelectorImpl、SelectedSelectionKeySet、SelectedSelectionKeySetSelector及SelectorTuple等关键组件,帮助理解Netty高性能网络编程的底层原理。

目录

  • java原生的WEPollSelectorImpl
  • netty的SelectionKey容器SelectedSelectionKeySet
  • netty的SelectedSelectionKeySetSelector
  • SelectorTuple
  • openSelector

每一个NioEventLoop配一个选择器Selector,在创建NioEventLoop的构造函数中会调用其自身方法openSelector获取selector

 

在开始分析openSelector()方法时,先认识下面几个类:

1、 java原生的Selector实例WEPollSelectorImpl
2、 netty自带的SelectionKey容器SelectedSelectionKeySet
3、 netty包装过的Selector实例SelectedSelectionKeySetSelector
4、 SelectorTuple

java原生的WEPollSelectorImpl

 

netty的SelectionKey容器SelectedSelectionKeySet

 

netty的SelectedSelectionKeySetSelector

 

SelectorTuple

 

接下来详细看下openSelector方法

openSelector

 

该方法成功创建Selector,涉及到的类的关系如下:

 

同一方框内的值指向的是同一个堆指针,所以它们的值是一样的。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: