是否有可能在使用rx
时为什么超时?我无法将ThreadPoolTaskExecutor
更改为ThreadPoolTaskExecutor
或ThreadPoolExecutor
答案 0 :(得分:1)
向Callable
提交ThreadPoolTaskExecutor
后,您应该获得Future
。在此Future
上,您可以使用get(long timeout, TimeUnit unit)
调用TimeUnit
函数,这是超时,即程序将等待,直到将来传递或继续前进的最长时间,通过投掷TimeoutException
。
即(未经证实的伪代码)
Future myFuture = threadPoolTaskExecutor.submit(myCallable);
try {
myResult = myFuture.get(5l,TimeUnit.SECONDS);
} catch(TimeoutException e) {
// Timeout-Related stuff here
}
答案 1 :(得分:1)
请参阅我下面的 TimeOutThreadPoolTaskExecutor 的 Git 中心链接
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);