如何使用 ThreadPoolTask​​Executor 为任务设置超时

How to set timeout for task using ThreadPoolTaskExecutor

使用ThreadPoolTaskExecutor时是否可以使任务超时?我无法将 ThreadPoolTaskExecutor 更改为 ThreadPoolExecutorExecutorService

向您的 ThreadPoolTaskExecutor 提交 Callable 后,您应该会收到 Future。在这个 Future 上,您可以使用 TimeUnit 调用 get(long timeout, TimeUnit unit) 函数,这是超时,程序将等待直到未来交付或继续前进的最长时间,通过抛出TimeoutException.

即(未经证实的伪代码)

Future myFuture = threadPoolTaskExecutor.submit(myCallable);
try {
    myResult = myFuture.get(5l,TimeUnit.SECONDS);
} catch(TimeoutException e) {
    // Timeout-Related stuff here
}

参考我下面的 Git hub link TimeOutThreadPoolTask​​Executor

https://github.com/vivek-gupta-21563/timeoutthreadpool

您可以使用首选超时参数执行或提交任务

execute(() -> System.out.println("Task to execute"), 2, TimeUnit.Minute);

submit(() -> System.out.println("Task to execute"), 2, TimeUnit.Minute);