当前位置: 代码迷 >> java >> dubbo线程模型是否在启动时初始化固定线程数?
  详细解决方案

dubbo线程模型是否在启动时初始化固定线程数?

热度:73   发布时间:2023-07-17 20:54:54.0

我的dubbo配置文件的一部分:

<dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" />

根据dubbo文档,上面的配置意味着

固定大小的线程池,启动时创建线程,永不关闭。

但是当我启动应用程序然后我使用jstack查看是否有100多个线程时,我发现只有大约40个线程并且我没有找到任何dubbo线程。 所以发生了什么事?

您通过声明dubbo:protocol创建的并不是 JVM 中唯一的线程来源。 通常 JVM 会启动许多实用程序线程,因此它可以正常运行并支持各种功能,例如终结器、关闭钩子、RMI 等。 jstack显示线程名称,其中大部分您应该能够通过谷歌搜索并了解它们的用途。

您的dubbo线程池很可能只有在处理传入请求时才会产生新线程。

这里是dubbo线程模型( ),有图展示dubbo线程模型,可以看到只有server有线程pool,也就是说只有dubbo provider才有线程池,因为它需要把I/O线程和非I/O线程分开。