Table of Contents
1. 相关流程
下面的相关流程特指NioServerSocketChannel/NioSocketChannel
1.1. bind流程
- 新建一个Channel
- 注册到boss group,注册时触发事件
- fireChannelRegistered
- fireChannelActive(如果是第一次注册,例如unregister后再register没有这个事件)
- 调用Java NIO bind到端口
| 类 | 提示 |
|---|---|
EventLoopGroup
|
EventLoop集合;register channel; 返回EventExecutor(next函数)
|
Executor
|
执行Runnable
|
ExecutorService
|
执行Callable; shutdown
|
ScheduledExecutorService
|
定时执行Runnable和Callable
|
EventExecutor
|
判断当前线程是否在本executor:inEventLoop
|
EventExecutorGroup
|
shudown; EventExector集合
|
EventLoop
|
返回ChannelHandlerInvoker,用于在EventLoop触发register,active, write等行为或事件
|
可能会感觉这里有bug,即在无限等待过程中,新加入scheduled tastk queue的task不会被执行。事实是在向其提交ScheduledTask时,会做以下操作:
因此是没有bug的
|