等待执行程序的线程通过执行程序提交完成



更新:我用这段代码修复了它(只有在你知道总任务计数时才有效,我的情况(

int totalThreads = 0;
int finishedThreads = 0;
private void checkExecutorFinished() {
    if(finishedThreads == totalThreads) {
        // Exceutor threads got finished
        System.out.println(shufflingResult);
    }
}
private void startMappingPhase() throws Exception {
    totalThreads = fileLines.size();
    for (String line : fileLines) {
        Future future = new ExecutingController().mapping(line);
        while (!future.isDone()) {
            //
        }
        shuffle((Collection<Pair<String, Integer>>) future.get());
        finishedThreads++;
        checkExecutorFinished();
    }
}

更新:我的问题很清楚,我需要通过遗嘱执行人提交来做到这一点; 而不是其他方法

我正在使用执行器服务来完成我的任务,

我想在线程完成时得到通知,我用谷歌搜索它发现有一种方法,但是通过调用执行器执行,因为我正在使用执行器提交来添加我的任务,我没有找到一种方法可以做到这一点,有办法吗?

executor.submit 返回 Future 对象,Future 有许多实用方法,如 isDone((、get(( 等!!

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html

相关内容

  • 没有找到相关文章

最新更新