4

让我问几个关于 Netty 线程的问题。

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

public NioServerSocketChannelFactory(Executor bossExecutor, Executor workerExecutor) 创建一个新实例。调用此构造函数与调用 NioServerSocketChannelFactory(Executor, Executor, int) 相同,其中 2 * 机器中可用处理器的数量。

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

public NioServerSocketChannelFactory(Executor bossExecutor, Executor workerExecutor, int workerCount) 创建一个新实例。参数: bossExecutor - 执行boss线程的Executor workerExecutor - 执行I/O工作线程的Executor workerCount - I/O工作线程的最大数量

Q3。有没有办法知道当前运行的老板和工作线程的数量?

任何帮助是极大的赞赏!

4

1 回答 1

3

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

是的。

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

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

Q3。有没有办法知道当前运行的老板和工作线程的数量?

ThreadPoolExecutor.getActiveCount()假设你通过了,你可以得到它Executors.newCachedThreadPool()。它返回ThreadPoolExecutor,因此您可以将其保存在某个地方,然后查询它以查看实际活动的线程数。

于 2013-11-14T08:00:21.240 回答