3

我从一个项目中的“裸”网络开始。

我仍在阅读所有令人惊叹的 javadocs,但有一点我没有得到。

到目前为止,我得到了什么:

有一个 Boss 线程启动引导程序并将服务器绑定到套接字端口,对吗?工作线程(可能很多)处理传入的连接并创建适当的通道和管道,对吗?

但是我们有 ExecutionHandler,它也可以向其他几个线程发送垃圾邮件,对吧?我的观点是,如果我有 10 个工作线程,以及 corepoolsize=16 的 ExecutionHandler,这意味着我的系统上可能会在负载非常重的情况下以 160 个并发线程结束?

抱歉,这个问题感觉很愚蠢,但我只是想从文档中的这部分理解。

干杯

4

1 回答 1

10

你对老板和工人的理解是对的。

对于 ExecutionHandler 它有点不同。ExecutionHandler 将事件处理交给一个额外的ThreadPool。这有助于确保您不会“阻塞”工作线程。ExecutionHandler 必须在不同的 Channel 之间共享,也必须在 Worker 之间共享。

因此,如果您的 Worker 数量为 10,核心线程池大小为 16,您将拥有 26 个线程 + 老板线程。

希望这可以说清楚。

于 2012-05-03T06:16:37.537 回答