通过超时中断 ExecutorService 中的任务
实现一个自定义 ExecutorService 来处理超时后的任务中断可能具有挑战性。然而,Java 并发框架使用 ScheduledExecutorService 提供了一种方便的解决方案。
针对任务超时的 ScheduledExecutorService
ScheduledExecutorService 允许安排任务在指定的延迟后或定期执行间隔。通过利用此功能,您可以创建一个自定义 ExecutorService 来监视提交的任务,并在超过预定义超时时中断它们。
TimeoutThreadPoolExecutor 实现
创建此类任务的一种方法ExecutorService 是 TimeoutThreadPoolExecutor 类,它扩展了标准 ThreadPoolExecutor。它集成了 ScheduledExecutorService (timeoutExecutor) 和并发映射 (runningTasks) 来跟踪正在运行的任务并安排其中断。
TimeoutThreadPoolExecutor 的功能
用法
到使用此自定义 ExecutorService,使用所需参数实例化 TimeoutThreadPoolExecutor 并开始提交任务。如果任务尚未完成,将在指定的超时后中断。
使用 Schedule 的替代方法
中断 ExecutorService 中长时间运行的任务的另一种方法是使用ScheduledExecutorService提供的调度方法。您可以提交两个任务:一个执行实际任务,另一个在指定超时后取消任务。
代码示例
ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); Future handler = executor.submit(new Callable(){ ... }); executor.schedule(new Runnable(){ public void run(){ handler.cancel(); } }, 10000, TimeUnit.MILLISECONDS);
此方法允许您执行一个任务,超时时间为 10 秒,超时后该任务将被取消并中断。
以上是如何在Java ExecutorService中实现定时任务中断?的详细内容。更多信息请关注PHP中文网其他相关文章!