当前位置: 首页 > 知识库问答 >
问题:

在Java中使用ThreadPoolExecator后,没有剩余的线程运行

程昕
2023-03-14

池大小=8,活动线程=0,排队任务=0,已完成任务=5678。为什么线程池处于活动状态时活动线程为0。谁能给我解释一下吗。它应该大于0,对吗?

共有1个答案

庄飞
2023-03-14

我怀疑您将核心池大小设置为零,或者您说让核心线程超时。

引用ThreadPoolExecutorJavadoc的“保持活动时间”部分:

默认情况下,仅当存在多个corePoolSize线程时,“保持活动”策略才适用,但只要keepAliveTime值不为零,也可以使用方法allowCoreThreadTimeOut(布尔值)将此超时策略应用于核心线程。

将该方法的true或false传递给:

[设置]如果在保持活动状态时间内没有任务到达,则控制核心线程是否超时和终止的策略,如果需要,在新任务到达时进行替换。

如果将核心池大小设置为零,则所有线程最终都将超时。在这种情况下,设置allowcoretheadatimeout是不相关的。

请参阅该Javadoc页面的回收部分:

您可以通过设置适当的保持活动时间、使用零核心线程的下限和/或设置allowCoreThreadTimeOut(布尔值),将池配置为允许所有未使用的线程最终死亡。

 类似资料:
  • 我的MongoDB卡住并返回以下错误: 但是,我的磁盘有空间: df-h df-i 这将是我的docker撰写: 这对我的码头工人来说是个问题。yml?因为我使用的是物理磁盘,而不是虚拟磁盘。我可以运行应用程序,1-2小时后mongo将再次失败。

  • 我正在尝试在 java 中模拟 CPU 调度算法并使用多线程。我已经成功地实施了FCFS(先到先得)和SJF(最短的工作优先)。但问题是当我开始想到SRTF(最短剩余时间优先)时,它是SJF的一种先发制人的形式。我正在使用以下模型: CPU的线程,它有一个变量,它每保持滴答声(一个简单的时钟增量)。我有一个标志,用于在开始执行之前检查CPU是否可用。 长期调度程序(LTS)的线程,它将进程从进程列

  • 问题内容: 当我尝试将某些文件保存到centos计算机上时,出现错误“设备上没有剩余空间” 我试过了 当我这样做 ->只有5G 似乎文件系统已满。我怎么能找到哪一个尺寸这么大? 问题答案: 和的输出之间的这种差异可能会在某些大文件已被删除但仍由某些进程打开的情况下发生。检查命令以查看哪些进程已打开描述符以删除文件。您可以重新启动该过程,空间将被释放。

  • 我已经向EC2实例附加了一个新卷。卷已成功附加。位于命令输出下面。 DF-H

  • 我在运行一些任务时在hadoop中收到以下异常。但是HDFS显示它有空间。任何有关此错误的信息都会有所帮助。

  • 我有一个EMR作业,它读取大约1TB的数据,过滤它并对它进行重新分区(重新分区后有一些连接),但是我的作业在重新分区时失败,错误为“设备上没有空间”。我很想更改“spark.local.dir”,但没有用。我的工作只在D2.4xLarge实例上完成,但在具有类似内核和RAM的R3.4xLarge实例上失败。我找不到这个问题的根本原因。如有任何帮助,不胜感激。 谢谢你抽出时间。