//创建一个线程池
ExecutorService pool = Executors.newFixedThreadPool(100);
//创建多个有返回值的任务
List<Future> list = new ArrayList<Future>();
for (int i = 0; i < 100; i++) {
int finalI = i;
Callable callable = () -> {
return finalI;
};
//执行任务并获取 Futrue对象
Future f = pool.submit(callable);
list.add(f);
}
//关闭线程池 停止新任务提交,执行完成之前提交的任务
pool.shutdown();
for (Future future : list) {
System.out.println("i:" + future.get().toString());
}
相关文章
- 01-30ThreadLocal怎么实现线程隔离的?可见性问题?为什么要重新定义一个threadLocalHashCode?为什么有内存泄露?弱引用又是什么?
- 01-30有返回值的Bookmark
- 01-30有返回值的线程
- 01-30future接口的cancel方法无法正常取消执行中的线程
- 01-30带返回值的线程
- 01-3050-使用 Future 有哪些注意点?Future 产生新的线程了吗?
- 01-30Future有返回值的线程
- 01-30springboot2.0 + myBatis 调用有返回值的SQL 存储过程
- 01-30工作这么多年!很多人竟然不知道线程池的创建方式有7种?
- 01-30线程池的参数设定,为什么这样设定?有什么好处?