【发布时间】:2017-03-23 12:30:48
【问题描述】:
我有一个以某种方式启动的 WM:
public void someMethod(Params pararms){
WorkManager wm = (WorkManager) ic.lookup(CONTROL_WORK_MANAGER);
ArrayList<WorkItem> workItems = Lists.newArrayList();
List<Work> works = getSomeWorks();
for (Work work : works) {
workItems.add(wm.startWork(work));
}
//after all works have been started, I just wait for them to be finished using join method:
wm.join(workItems, WorkManager.JOIN_AND, (int) WorkManager.INDEFINITE);
// "other code"
}
someMethod() 被不同的线程调用,问题是wm.join() 不仅仅等待给定的工作完成,而是等待所有线程启动的所有工作。
最终,"other code" 会在 app 中的每一项工作完成后执行。
这是应该的方式吗?如果是这样,我可以修复它,所以每个wm.join() 只等待“它的”工作完成吗?
WAS 版本是 8.5.5.11
谢谢!
【问题讨论】:
标签: java multithreading asynchronous websphere workmanagers