package com.neutron.t23; import java.util.concurrent.*; /** * 线程池接口 * 了解线程池Future,FutureTask */ public class T236Future { /** * Future包含两部分 * FutureTask:要执行的任务,实现了Runnable接口 * Future返回值 */ public static void main(String[] args) throws InterruptedException, ExecutionException { // FutureTask<Integer>代表未来执行的结果是Integer类型 FutureTask<Integer> task = new FutureTask<>(() -> { TimeUnit.MILLISECONDS.sleep(500); return 1000; }); // 运行任务 new Thread(task).start(); System.out.println(task.get()); // 阻塞,任务什么时候完成,什么时候结束,task返回值就是FutureTask<Integer> // 创建固定尺寸为5的线程池,实现所有线程池ExecutorService接口 ExecutorService service = Executors.newFixedThreadPool(5); Future<Integer> task1 = service.submit(() -> { TimeUnit.MILLISECONDS.sleep(500); return 1; }); System.out.println(task1.get()); // Future.get结果,任务将结束 System.out.println(task1.isDone()); // 任务是否完成 service.shutdownNow(); } }