Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
等待来自Java executor的至少一个结果,而无需等待_Java_Multithreading_Concurrency_Future_Futuretask - Fatal编程技术网

等待来自Java executor的至少一个结果,而无需等待

等待来自Java executor的至少一个结果,而无需等待,java,multithreading,concurrency,future,futuretask,Java,Multithreading,Concurrency,Future,Futuretask,我有一个未来任务的列表 futureList.add(executor.submit(new Callable(someList))); 当这些被执行时,我想从中得到结果项。 但是,如果我不一直循环检查未来任务是否完成,然后得到结果,我怎么能做到这一点呢 futureList.add(executor.submit(new Callable(someList))); for (int i = 0; i < futureList.size(); i++) {

我有一个未来任务的列表

   futureList.add(executor.submit(new Callable(someList)));
当这些被执行时,我想从中得到结果项。 但是,如果我不一直循环检查未来任务是否完成,然后得到结果,我怎么能做到这一点呢

   futureList.add(executor.submit(new Callable(someList)));
for (int i = 0; i < futureList.size(); i++) {
                    if (futureList.get(i).isDone()) {
    .....
}}
for(int i=0;i
我曾考虑过制作一些额外的notifywait结构,但我仍然需要知道哪个线程完成了,这样就不会帮助我避免一直循环。
有什么建议吗?

使用ExecutionCompletionService,它正是为此而设计的,请参见API

   futureList.add(executor.submit(new Callable(someList)));