关于NioEventLoop启动过程中线程问题

来源:4-6 NioEventLoop的启动

正义柔情永在

2018-10-22

老师: SingleThreadEventLoop.run()方法被调用的时候并不会产生一个新的线程.
SingleThreadEventLoop.execute()方法中提交的runable 仍然在主线程中.
只有SingleThreadEventLoop.doStartThread()中的executor.execute()[ThreadPerTaskExecutor] 才会真正启动一个新的线程,SingleThreadEventLoop.run()只是一个普通的run方法.我的理解对不对?
我自己原本理解的是每一个NioEventLoop就是一个Thread,现在的理解是,每个NioEventLoop中的execute()执行时,如果判断没有ThreadPerTaskExecutor线程启动,那么创建一个新的线程并保存成员中,并真正的启动.以后的在NioEventLoop中的当前线程其实指的是ThreadPerTaskExecutor所创建出来的那个线程.是不是?

写回答

1回答

闪电侠

2018-10-23

对的,nio线程都是懒启动的,只有用到了才会启动,对于 boss 线程来说,只有绑定端口才会启动,对于 worker线程来说,只有新连接进来了,才会启动,直到线程个数为2倍的cpu

0
0

Java读源码之Netty深入剖析

解析netty各大组件细节,百万级性能调优,设计模式实际运用

2334 学习 · 283 问题

查看课程