package com.cn.thread; import java.util.ArrayList; import java.util.List; import java.util.concurrent.*; /** * @author zhouzenghui * @title: FutureTest * @description: TODO * @date 2019/7/24 14:03 */ public class FutureTest { //最大线程池数量 private final static int maxSize = Runtime.getRuntime().availableProcessors() * 2 * 2; //线程池核心线程数 private final static int corePoolSize = Runtime.getRuntime().availableProcessors() * 2; private final static LinkedBlockingQueue queue = new LinkedBlockingQueue(); public static ExecutorService executorService = new ThreadPoolExecutor(corePoolSize, maxSize, 0L, TimeUnit.MILLISECONDS, queue, Executors.defaultThreadFactory()) ; public static void main(String[] args)throws Exception { List<Future<List<Student>>> futures = new ArrayList<>(); for (int i = 0; i < 10; i++) { Future<List<Student>> future = executorService.submit(() -> { List<Student> list = new ArrayList<>(); //模拟耗时 Thread.sleep(1000); Student student = new Student(); student.setAge(10); student.setName("张三" ); student.setSex("男"); list.add(student); return list; }); futures.add(future); } //汇总所有的结果,判断是否处理完毕 while (!futures.stream().allMatch(e -> e.isDone())) { System.out.println("未处理完成。。。。。。。。。。。。。"); } System.out.println("处理完成"); // executorService.shutdown(); } }
Future与ExecutorService组合简单使用
最新推荐文章于 2022-09-25 20:01:50 发布