1 import java.util.concurrent.ExecutorService;
2 import java.util.concurrent.FutureTask;
3 import java.util.concurrent.TimeUnit;
4
5 public class Future {
6
7 public static void main(String[] args) throws Exception,InterruptedException {
8
9 java.util.concurrent.FutureTask<Integer> task = new FutureTask<>(() -> {
10 TimeUnit.MILLISECONDS.sleep(5000);
11 return 200;
12 });
13
14 new Thread(task).start();
15
16 System.out.println(task.get()); //阻塞 知道线程执行完毕返回结果
17
18 ExecutorService service = java.util.concurrent.Executors.newFixedThreadPool(5);
19 java.util.concurrent.Future<Integer> result = service.submit(() -> {
20 TimeUnit.SECONDS.sleep(1);
21 return 200;
22 });
23
24 System.out.println(result.isDone());
25 System.out.println(result.isDone()); //任务执行完没有
26 System.out.println(result.get()); //阻塞等着结果
27 System.out.println(result.isDone());
28
29 service.shutdown(); //记得关掉线程池不然Java虚拟机不会自己关闭
30 }
31
32 }