我将一堆线程对象存储在数组列表中。我希望能够随机启动这些线程。同一个线程可以启动多次。在启动线程对象之前,我检查线程是否处于 Activity 状态,以及它们是否具有 NEW 或 TERMINATED 状态。这个限制是因为,我不想打扰“繁忙”的线程。现在,对于新线程,这工作得很好。但对于 TERMINATED 线程,我得到一个异常。
当一个线程结束时,它不应该回到"new"状态吗?或者线程是“一次性的”——比如使用一次就完成?
最佳答案
正如 Thread.start() 的文档中所述,“多次启动一个线程是不合法的。特别是,线程一旦完成执行就不能重新启动。”
你最好持有Runnable实例并实现您自己的逻辑来跟踪每个实例的执行何时完成。使用Executor可能是运行 Runnables 的最简单方法。
关于java - 终止的线程恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411509/