问题背景:多线程处理集合,返回结果无序。我们经常会遇到需要多线程处理一个有序集合(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
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论