关于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回答
-
对的,nio线程都是懒启动的,只有用到了才会启动,对于 boss 线程来说,只有绑定端口才会启动,对于 worker线程来说,只有新连接进来了,才会启动,直到线程个数为2倍的cpu
00
相似问题