gpt4 book ai didi

java - 在执行器服务中实现线程超时

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:07 27 4
gpt4 key购买 nike

所以现在我有一个相当基本的 Executor 服务,我用它来将我的程序分解成线程,如下所示:

ExecutorService threadPool = Executors.newFixedThreadPool(12);
for (int i = 0; i < objectArray.length; i++) {
threadPool.submit(new ThreadHandler(objectArray[i], i));
// The i is used elsewhere
}

我想知道是否有检测/关闭“崩溃”或“卡住”线程的好方法?我查看了文档,但它似乎根本不符合我的使用方式...

有人可以帮我解决这个问题吗?谢谢

最佳答案

threadPool.submit返回 Future<T>目的。所以使用这个 future 的对象,你可以处理你的任务执行。通过使用 isCancelled() and isDone您可以检查任务已取消或完成的方法。更多get()正在阻塞调用,它在解释或取消或执行异常时抛出异常。

List<Future<?>> list = new ArrayList<Future<?>>();
for (int i = 0; i < objectArray.length; i++) {
Future<?> task=threadPool.submit(new ThreadHandler(objectArray[i], i));
// The i is used elsewhere
list.add(task);
}
for(Future future : list){
try{
future.get();
}catch(CancellationException cx){
...
}catch(ExecutionException ex){
...
}catch(InterruptedException ix){
...
}

}

关于java - 在执行器服务中实现线程超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302984/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com