让我问几个关于Netty线程的问题。
Q1。创建了哪个线程? 根据文档,以下构造函数创建多个线程(2 * avail处理器的数量)。这意味着它会创建多个boss线程或工作线程?我的假设是1个boss线程和多个工作线程。我是对的吗?
public NioServerSocketChannelFactory(Executor bossExecutor,Executor workerExecutor) 创建一个新实例。调用此构造函数与调用NioServerSocketChannelFactory(Executor,Executor,int)相同,其中2 *是计算机中可用处理器的数量。
Q2。根据文档,在我看来,我可以使用以下构造函数指定工作线程的最大数量。我可以隐式指定要创建的工作线程的确切数量 - 例如16吗?
public NioServerSocketChannelFactory(Executor bossExecutor, 执行人员,执行人, int workerCount) 创建一个新实例。 参数: bossExecutor - 将执行boss线程的Executor workerExecutor - 将执行I / O工作线程的Executor workerCount - I / O工作线程的最大数量
Q3。有没有办法知道当前运行的boss和worker线程的数量?
非常感谢任何帮助!
答案 0 :(得分:3)
Q1。创建了哪个线程?根据文档,以下构造函数创建多个线程(2 * avail处理器的数量)。这意味着它会创建多个boss线程或工作线程?我的假设是1个boss线程和多个工作线程。我是对的吗?
是
Q2。根据文档,在我看来,我可以使用以下构造函数指定工作线程的最大数量。我可以隐式指定要创建的工作线程的确切数量 - 例如16吗?
只需指定Executors.newCachedThreadPool()
并指定要用作构造函数参数的最大线程数。
Q3。有没有办法知道当前运行的boss和worker线程的数量?
如果您通过ThreadPoolExecutor.getActiveCount()
,则可以通过Executors.newCachedThreadPool()
获取。它返回ThreadPoolExecutor
,因此您可以将其保留在某处,然后查询它以查看实际活动的线程数。