问题:
如何使用invokeAll
创建一系列具有超时的线程并停止执行。
背景:
我有一个callables
列表,我希望等待它们完成。但是,如果它们在设定的时间(比如一秒)内没有完成,我想要取消它们。这似乎很容易通过使用
executor.invokeAll(callables, 1000l, TimeUnit.MILLISECONDS);
所以,等待一秒钟后,它会很好地超时,我就可以继续我的工作了。然而,在后台,线程仍然活跃,并且可能执行某些代码片段。本质上,它们没有被中断,而我不希望发生这种情况 - 我希望线程停止执行。
有没有办法使用返回的futures列表,在invokeAll
超时后停止线程?