多线程处理list集合
如果您在阅读过程中发现不足之处,请多多指正,谢谢
import lombok.SneakyThrows;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
?
/**
* 模拟处理考试分值计算场景
*
* @author lyn
* @date 2022/2/22 16:20
*/
public class TestThreadPool {
private static volatile AtomicInteger index = new AtomicInteger(0);
;
?
public static void main(String[] args) {
//准备基础数据
final int totalSize = 10045;
Random r = new Random();
List<StuScore> list = new ArrayList<>();
for (int i = 1; i <= totalSize; i++) {
list.add(new StuScore(i, r.nextInt(55) + 40, r.nextInt(55) + 40, r.nextInt(55) + 40, 0));
}
?
//多线程计算成绩
List<StuScore> result = partJob(list);
//取总分前五名展示
List<StuScore> collect = result.stream().sorted(Comparator.comparing(StuScore::getTotalScore).reversed()).limit(5).collect(Collectors.toList());
for (StuScore stuScore : collect) {
System.out.println(stuScore);
}
System.out.println(index);
}
?