欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-21 15:25:29
适用场景问题抽象:多线程处理集合,返回结果无序。我们经常会遇到需要多线程处理一个有序集合(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

相关标签: Java开发 java