gpt4 book ai didi

Java 并发 : how to get the worker thread's response asynchronously

转载 作者:行者123 更新时间:2023-11-29 03:54:20 26 4
gpt4 key购买 nike

我是 java.util.concurrent 包的新手。我正在尝试写一些样本。这是我的一些示例代码片段:

for (MyTask task : tasks) { 
Future<Boolean> result = task.getResult();
try {
if (result.isCancelled()) {
logger.info("processResults(): cancelled: "+ ((MyTask) task).getName());
} else if (result.get() == false) {
logger.info("processResults(): Failed : "+ ((MyTask) task).getName());
} else {
logger.info("processResults(): successful: "+ ((MyTask) task).getName());
tasks.remove(task);
continue;
}
} catch (Exception e) {
logger.warn("processResults(): Excepiton: " + e.getMessage());
}
}

我有一个关于从工作线程处理 Future 对象的问题。在我的 for 循环中,任务的处理是按顺序进行的;比方说,我需要处理工作线程的返回结果,如果我的第二个工作线程在第一个工作线程之前完成,在我的代码中就没有办法先处理第二个工作线程。

谁能建议处理当前线程的最佳方法。

谢谢,文卡特帕帕纳

最佳答案

这是使用生产者-消费者模式的经典案例:让任务(生产者)将其结果放入队列,让“下一步”代码(消费者)从队列中获取结果并继续工作。

ArrayBlockingQueue 是一个不错的选择。第二组工作线程在队列 block 上调用 take() 直到有可用的东西(当您的第一步线程在队列上调用 put() 时)。

关于Java 并发 : how to get the worker thread's response asynchronously,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7213260/

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