在Java中使用ThreadPoolExecutor时如何通过超时取消特定任务?

时间:2015-03-16 19:48:02

标签: java multithreading threadpoolexecutor

我在Java中使用ThreadPoolExecutor来并行处理项目。每个项目处理都是一个单独的任务,我将其放入队列中供执行者处理。不幸的是,某些任务可能需要很长时间,我希望能够取消这些任务并继续完成其余任务。我不想等待关机方法及其超时(整体处理需要数天)。 我希望循环当前执行的任务并检查它运行了多长时间,如果超出限制则取消它。

1 个答案:

答案 0 :(得分:1)

当您向其提交任务时,ThreadPoolExecutor将向您返回Future对象。

在你的期货上使用get(long timeout, TimeUnit unit)方法,如果你得到TimeoutException,则在它们上面调用cancel。