当前位置: 移动技术网 > IT编程>开发语言>Java > 【Java多线程】过程并行执行,结果顺序返回

【Java多线程】过程并行执行,结果顺序返回

2020年11月12日  | 移动技术网IT编程  | 我要评论
适用场景问题抽象:多线程处理集合,返回结果无序。我们经常会遇到需要多线程处理一个有序集合(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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网