package com.leelen.esafe.test; import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.*; public class ThreadPoolBuilderTest { // 创建线程池 private static ExecutorService pool = new ThreadPoolExecutor(2, 4, 3000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(1000), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy()); @Test public void testThread1() { System.out.println("---start---"); // 模拟20个并发 int num = 20; List<MyTask> myTasks = new ArrayList<>(); for (int i = 0; i < num; i++) { MyTask myTask = new MyTask(i); myTasks.add(myTask); } // 执行任务 List<Future<Integer>> futures = new ArrayList<>(); try { for (int i = 0; i < myTasks.size(); i++) { // 线程执行返回结果 Future<Integer> future = pool.submit(myTasks.get(i)); futures.add(future); } } catch (Exception e) { } // 输出线程执行结果 try { for (int i = 0; i < futures.size(); i++) { Future<Integer> future = futures.get(i); Integer result = future.get(); System.out.println(result); } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } System.out.println("---end---"); } // Callable线程任务 class MyTask implements Callable<Integer> { Integer tid; public MyTask(Integer tid) { this.tid = tid; } @Override public Integer call() throws Exception { System.out.println("this thread id is = " + tid); Thread.sleep(3000); return tid; } } }