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

How to cancel a particular task by timeout when using ThreadPoolExecutor in Java?

我在 Java 中使用 ThreadPoolExecutor 来并行处理项目。每个项目处理都是一个单独的任务,我将其放入队列中以供执行程序处理。不幸的是,有些任务可能会花费太长时间,我希望能够取消此类任务并继续执行其余任务。我不想等待关闭方法及其超时(整体处理需要几天时间)。 我想要一些类似循环当前执行的任务并检查它有多长的东西 运行 并在它超过限制时取消它。

当您向它提交任务时,ThreadPoolExecutor 将 return 向您发送 Future 对象。

对你的期货使用 get(long timeout, TimeUnit unit) 方法,如果你得到 TimeoutException,然后调用它们的取消。