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

时间:2016-12-12 11:25:01

标签: java multithreading threadpool executorservice

是否有可能在使用rx时为什么超时?我无法将ThreadPoolTaskExecutor更改为ThreadPoolTaskExecutorThreadPoolExecutor

2 个答案:

答案 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)

请参阅我下面的 TimeOutThreadPoolTask​​Executor 的 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);