java - 终止的线程恢复

标签 java thread-state

我将一堆线程对象存储在数组列表中。我希望能够随机启动这些线程。同一个线程可以启动多次。在启动线程对象之前,我检查线程是否处于 Activity 状态,以及它们是否具有 NEW 或 TERMINATED 状态。这个限制是因为,我不想打扰“繁忙”的线程。现在,对于新线程,这工作得很好。但对于 TERMINATED 线程,我得到一个异常。

当一个线程结束时,它不应该回到"new"状态吗?或者线程是“一次性的”——比如使用一次就完成?

最佳答案

正如 Thread.start() 的文档中所述,“多次启动一个线程是不合法的。特别是,线程一旦完成执行就不能重新启动。”

你最好持有Runnable实例并实现您自己的逻辑来跟踪每个实例的执行何时完成。使用Executor可能是运行 Runnables 的最简单方法。

关于java - 终止的线程恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411509/

相关文章:

java - 从现有项目生成 Maven POM?

java - 渲染具有值的单元格

c# - 如何检查线程是否完成执行

java - 具有以固定速率运行的可运行对象的 Java 项目可以在一段时间后停止吗?我的在大约 40 小时后仍然卡住

java - Thread.interrupt 上的 IllegalThreadStateException

c++ - 如何在 C++ 中确定一个 win32 线程处于 Wait 或 Join 或 Sleep 状态

java - 如何改进已经是 O(n) 的递归排序算法?

java - 我怎样才能让 JPanel 在窗口滚动时自动更新?

c# - 异步等待 : is the main thread suspended?

Java HtmlUnit 内存泄漏