import java.util.concurrent.*;
/**
* @Description
* @Date 2022/6/4 11:13
* @Created by dzj
*/
public class FutureTaskDemo {
public static void main(String[] args) {
// 创建一个可重用固定个数的线程池
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
FutureTask<String> futureTask = new FutureTask(() -> {
System.out.println("开始休眠");
TimeUnit.SECONDS.sleep(1);
System.out.println("休眠结束");
return "12";
});
fixedThreadPool.submit(futureTask);
try {
System.out.println(futureTask.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
System.out.println("get方法是阻塞的");
fixedThreadPool.shutdown();
}
}
- 线程池使用完毕需要关闭,否则会一直处于运行中.
- get方法会导致线程阻塞.