【发布时间】:2019-09-05 01:06:04
【问题描述】:
我有一个使用ExecutorService.newFixedThreadPool 创建的线程池。我在这个池中有executed 完全相同数量的线程,并且我的线程永远在运行守护进程。我想要完全运行相同逻辑的 n 头。当然,我可以在这个线程池的队列中提供“足够”的线程,但我不能将无限数量的线程放入其中。一种可能“覆盖足够多的地方”的方法是在我的线程中,我可以catch (Throwable e) 然后重新开始,就好像线程是新的一样。但这似乎很老套。有什么建议吗?
谢谢
我特别搜索了互联网和 StackOverflow。但是大多数文献都假设线程是为了完成,这并不适用于此。
【问题讨论】:
-
Runnable 的 run() 方法是一个线程入口点。使用 try/catch 将代码包装在线程入口点始终是一个好习惯。这将防止线程由于异常而退出,在大多数情况下保持线程处于活动状态。这没有什么“hacky”。
标签: java multithreading threadpool