Netty - 指定要创建的线程数

时间:2013-11-08 07:25:27

标签: netty

让我问几个关于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线程的数量?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

  

Q1。创建了哪个线程?根据文档,以下构造函数创建多个线程(2 * avail处理器的数量)。这意味着它会创建多个boss线程或工作线程?我的假设是1个boss线程和多个工作线程。我是对的吗?

  

Q2。根据文档,在我看来,我可以使用以下构造函数指定工作线程的最大数量。我可以隐式指定要创建的工作线程的确切数量 - 例如16吗?

只需指定Executors.newCachedThreadPool()并指定要用作构造函数参数的最大线程数。

  

Q3。有没有办法知道当前运行的boss和worker线程的数量?

如果您通过ThreadPoolExecutor.getActiveCount(),则可以通过Executors.newCachedThreadPool()获取。它返回ThreadPoolExecutor,因此您可以将其保留在某处,然后查询它以查看实际活动的线程数。