【Java多线程】过程并行执行,结果顺序返回
程序员文章站
2022-09-08 23:46:20
适用场景问题抽象:多线程处理集合,返回结果无序。我们经常会遇到需要多线程处理一个有序集合(list)然后返回有序的处理结果,因为多线程的处理开始和结束都是不可预期的,所以结果常常是无序的。预期目的:并行处理业务逻辑,按顺序返回处理结果处理方案:多线程处理返回结果Futrue,对Future保证顺序即可得到有序的结果(不考虑资源共享)在这里插入代码片......
问题背景:多线程处理集合,返回结果无序。我们经常会遇到需要多线程处理一个有序集合(list)然后返回有序的处理结果。
预期目的:并行处理业务逻辑,按顺序返回处理结果
处理方案:多线程处理返回结果Futrue,对Future保证顺序即可得到有序的结果
public static void test() throws Exception{
int[] nums ={1,2,3,4,5,6,7,8,9};
ExecutorService executors = Executors.newCachedThreadPool();
List<Future> resultList = new ArrayList<>();
for(int i=0;i<nums.length;i++){
int num = nums[i];
Future<String> res = executors.submit(new Callable<String>(){
public String call() throws Exception{
int res = num*num;
System.out.println("exe:"+ res);
return "result = "+res;
}
});
resultList.add(res);
}
//
for(Future future :resultList){
System.out.println("sorted result "+ future.get());
}
executors.shutdown();
}
本文地址:https://blog.csdn.net/weirong2010/article/details/109642634
上一篇: Mysql 实现字段拼接的三个函数