我将一堆线程对象存储在数组列表中。我希望能够随机启动这些线程。同一个线程可以启动多次。在启动线程对象之前,我检查线程是否处于活动状态,以及它们是否具有 NEW 或 TERMINATED 状态。这个限制是因为,我不想打扰“繁忙”的线程。现在,对于新线程,这工作得很好。但对于 TERMINATED 线程,我得到一个异常。
当一个线程结束时,它不应该回到“新”状态吗?或者线程是“一次性的”——比如使用一次就完成?
正如它在文档中所说线程.start(),“多次启动一个线程是不合法的。特别是,线程一旦完成执行就不能重新启动。”
你最好抓住Runnable实例并实现您自己的逻辑来跟踪每个实例的执行何时完成。使用Executor可能是运行 Runnables 的最简单方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)