首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netty工作线程

Netty工作线程
EN

Stack Overflow用户
提问于 2013-09-11 12:46:46
回答 1查看 2K关注 0票数 0

在我的netty服务器中,我创建线程池如下所示。

代码语言:javascript
复制
    ChannelFactory factory =
        new NioServerSocketChannelFactory(
            Executors.newCachedThreadPool(threadFactory),
            Executors.newCachedThreadPool(threadFactory);

有时,我注意到,在服务器处理了一定数量的连接之后,随后的连接等待一个优先线程完成。

从newCachedThreadPool的文档中,我假设线程池根据需要创建新线程。有人能帮助我理解为什么我的一些连接会被阻塞,直到先前的连接结束吗?netty会不会为新连接创建一个新线程,因为所有现有的线程都很忙吗?

我该怎么解决这个问题?

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-13 02:55:49

创建一个线程池,该池重用在共享无界队列上操作的固定数量的线程。

在任何时候,最多的nThreads线程都是活动的处理任务。

如果在所有线程都处于活动状态时提交了其他任务,它们将在队列中等待,直到线程可用为止。如果任何线程由于在关闭之前的执行过程中失败而终止,那么如果需要执行后续任务,将有一个新线程代替它。

池中的线程将存在,直到显式关闭为止。

来自Oracle for newCachedThreadPool

所以线程号是由Executors.newCachedThreadPool固定的

在netty中,默认值是processer_number *2

:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18741626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档