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();
}
}
thread47 - Future和FutureTask
最新推荐文章于 2024-02-21 16:58:01 发布