问题:以前做的多线程,执行的返回结果都是无序的,所以每次执行完毕后还要对结果集重新进行排序,增加了耗时;
今天突然想到一个思路,在给线程池提交任务的时候,可以提前获取任务总数,创建一个用于接收结果集的固定大小list2,然后子线程执行的时候把当前任务序号传进去,处理好数据后根据序号(下标)直接把数据加到list2集合的指定位置里,
注意,在提交任务之前要先用循环把list2.add(null)把这个结果集填充到目标容量大小,防止子线程填充数据时list.set(22, "哈哈哈")时报数组越界,
因为每一个子线程都是把结果填充到list2中的指定位置,所以不存在并发问题;
先记录一下这个想法,以后有相似场景再进行验证一下
标签:java,结果,list2,任务,线程,提交,多线程 From: https://www.cnblogs.com/huangruiwu/p/18009817