如何使用 ThreadPoolTaskExecutor 为任务设置超时
How to set timeout for task using ThreadPoolTaskExecutor
使用ThreadPoolTaskExecutor
时是否可以使任务超时?我无法将 ThreadPoolTaskExecutor
更改为 ThreadPoolExecutor
或 ExecutorService
。
向您的 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 TimeOutThreadPoolTaskExecutor
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);
使用ThreadPoolTaskExecutor
时是否可以使任务超时?我无法将 ThreadPoolTaskExecutor
更改为 ThreadPoolExecutor
或 ExecutorService
。
向您的 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 TimeOutThreadPoolTaskExecutor
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);