我正在为这个问题寻找一个干净的设计/解决方案:我有两个线程,可以运行只要用户想要,但最终会在用户发出停止命令时停止。但是,如果其中一个线程突然结束(例如,由于运行时异常),我想停止另一个线程。
现在两个线程都执行一个Runnable
(所以当我说“停止线程”时,我的意思是我在Runnable
实例上调用了一个 stop() 方法),我在想的是避免使用线程(线程类)并使用CompletionService
接口然后将两个 Runnables 提交到该服务的一个实例。
有了这个,我将使用 CompletionService 的方法take()
,当这个方法返回时,我会停止两个 Runnables,因为我知道其中至少一个已经完成。现在,这可行,但如果可能的话,我想知道一个更简单/更好的解决方案。
另外,当我们有n
线程并且其中一个完成停止执行所有其他线程时,什么是一个好的解决方案?
提前致谢。