本文主要是介绍线程池.invokeAll,invokeAny实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
invokeAll触发执行任务列表,返回的结果顺序也与任务在任务列表中的顺序一致.所有线程执行完任务后才返回结果。如果设置了超时时间,未超时完成则正常返回结果,如果超时未完成则报异常。
invokeAny将第一个得到的结果作为返回值,然后立刻终止所有的线程。如果设置了超时时间,未超时完成则正常返回结果,如果超时未完成则报超时异常。
1
//自定义的类class Result {String res;public Result() {}public Result(String res) {this.res = res;}public String getRes() {return res;}public void setRes(String res) {this.res = res;}}ExecutorService threadPool = new ThreadPoolExecutor(2, 8, 5, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(5));List<CallableTask> callableTaskList = new ArrayList<>();for (int i = 0; i < 10; i++) {callableTaskList.add(new CallableTask(i));}List<Future<Result>> futureList =
这篇关于线程池.invokeAll,invokeAny实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!