File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -46,7 +46,7 @@ Netty可以创建多个EventLoop,且单个EventLoop可能会服务于多个客
4646
4747
4848## 任务调度
49- 有时候我们需要在指定的时间之后触发任务或者周期性的执行某一个人物 ,这都需要使用到任务调度。
49+ 有时候我们需要在指定的时间之后触发任务或者周期性的执行某一个任务 ,这都需要使用到任务调度。
5050
5151
5252### JDK任务调度
@@ -61,15 +61,15 @@ JDK主要有Timer和ScheduledExecutorService两种实现任务调度的方式,
6161![ EventLoop任务调度] ( ../img/netty/EventLoop任务调度.png )
6262
6363使用Channel获取其对应的EventLoop,然后调用schedule方法给其分配一个Runnable执行。Netty的任务调度
64- 比JDK的任务调度性能性能要好 ,这主要是由于Netty底层的线程模型设计的非常优秀。
64+ 比JDK的任务调度性能要好 ,这主要是由于Netty底层的线程模型设计的非常优秀。
6565
6666
6767## 线程管理
6868Netty线程模型的卓越性能取决于当前执行任务的Thread,我们看一张图就明白了:
6969
7070![ EventLoop执行逻辑] ( ../img/netty/EventLoop执行逻辑.png )
7171
72- ** 如果处理Chanel任务的线程正是支撑EventLoop的线程 ,那么与Channel的任务会被直接执行。
72+ ** 如果处理Channel任务的线程正是支撑EventLoop的线程 ,那么与Channel的任务会被直接执行。
7373否则EventLoop会将该任务放入任务队列之中稍后执行。
7474需要注意的是每个EventLoop都有自己的任务队列,独立于其他EventLoop的任务队列。**
7575
@@ -88,7 +88,7 @@ EventLoop的创建和分配方式也不同。
8888EventLoopGroup负责为每个新创建的Channel分配一个EventLoop,一旦一个Channel被分配给EventLoop,它将在
8989整个生命周期中都使用这个EventLoop及其Thread处理事件和任务。
9090
91- ** 注意:EventLoop的分配方式对ThreadLocal的使用是很有很大影响的 。因为注册在一个EventLoop上的Channel
91+ ** 注意:EventLoop的分配方式对ThreadLocal的使用是有很大影响的 。因为注册在一个EventLoop上的Channel
9292共有这一个线程,那么在这些Channel之间使用ThreadLocal,其ThreadLocal的状态都是一样的,无法发挥ThreadLocal
9393本来的作用。**
9494
You can’t perform that action at this time.
0 commit comments