线程池 ExecutorService 的使用例子
文章目录
- 一、Executor 线程池的体系UML图:
- 二、Executor 、ExecutorService 、ThreadPoolExecutor 等类的说明
- 三、代码示例:
一、Executor 线程池的体系UML图:
二、Executor 、ExecutorService 、ThreadPoolExecutor 等类的说明
1、线程池: 提供一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁的额外开销,提高了响应的速度。2、线程池的体系结构:
java.util.concurrent.Executor 负责线程的使用和调度的根接口|--ExecutorService 子接口: 线程池的主要接口|--ThreadPoolExecutor 线程池的实现类|--ScheduledExceutorService 子接口: 负责线程的调度|--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor,实现了ScheduledExecutorService3、工具类 : Executors
ExecutorService newFixedThreadPool() : 创建固定大小的线程池
ExecutorService newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。
ExecutorService newSingleThreadExecutor() : 创建单个线程池。 线程池中只有一个线程ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时的执行任务
三、代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;public class TestThreadPool {public static void main(String[] args) throws InterruptedException, ExecutionException {//1. 创建线程池ExecutorService pool = Executors.newFixedThreadPool(5);List<Future<Integer>> list=new ArrayList<Future<Integer>>();for (int i = 0; i < 10; i++) {Future<Integer> future=pool.submit(new Callable<Integer>() {public Integer call() throws Exception {int sum=0;for (int i = 0; i <=100; i++) {sum+=i;}return sum;}});list.add(future);}pool.shutdown();for (Future<Integer> future : list) {System.out.println(future.get());} // Future<Integer> future=pool.submit(new Callable<Integer>() {// public Integer call() throws Exception {// int sum=0;
// for (int i = 0; i <=100; i++) {// sum+=i;
// }
// return sum;
// }
// });
// System.out.println(future.get());
// pool.shutdown(); // ThreadPoolDemo threadPoolDemo=new ThreadPoolDemo();
//
// //2. 为线程池中的线程分配任务
// for (int i = 0; i < 10; i++) {// pool.submit(threadPoolDemo);
// }
//
// //3. 关闭线程池
// pool.shutdown();
// // new Thread(threadPoolDemo).start();
// new Thread(threadPoolDemo).start();}
}class ThreadPoolDemo implements Runnable{private int i=0;public void run() {while(i<=100){System.out.println(Thread.currentThread().getName()+" "+ i++);}}
}
线程池 ExecutorService 的使用例子相关推荐
- ExecutorService为创建的线程池ExecutorService pool = Executors.newFixedThreadPool(POOL_SIZE)
ExecutorService就是要创建的线程池 JAVA中线程池用类ExecutorService代表 ,案例ExecutorService pool = Executors.newFixedTh ...
- Java线程池ExecutorService中重要的方法
ExecutorService 介绍 ExecutorService是java线程池定义的一个接口,它在java.util.concurrent包中,在这个接口中定义了和后台任务执行相关的方法. Ja ...
- Java 并发编程之线程池 ExecutorService 接口
ExecutorService 接口继承 Executor 接口,后者只有一个executor() 方法:前者则定义了shutdown()结束线程,submit()提交任务线程,isTerminate ...
- Java线程池ExecutorService
开篇前,我们先来看看不使用线程池的情况: new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() {@Overridepu ...
- 线程池ExecutorService
线程池: 任务提交到线程池,而不是直接交给某线程,线程池拿到任务后,它在内部找空闲的线程进行执行(封装),任务是提交给线程池,一个线程只能执行一个任务,但可以同时向一个线程池提交多个任务. 创建固定 ...
- 关于线程池ExecutorService的shutdown()与shutdownNow()方法的区别
2019独角兽企业重金招聘Python工程师标准>>> 问题 这两天被一个问题折腾着:一个线程池,可能会有上万个任务要执行.问题是,一旦最先运行的线程执行完,整个线程池就结束了,哪怕 ...
- 浅析Java线程池 ExecutorService
ExecutorService是Java中对线程池定义的一个接口,它java.util.concurrent包中. 创建一个什么样的ExecutorService的实例(即线程池)需要g根据具体应用场 ...
- java executor spring_java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)
一.java ExecutorService实现 创建ExecutorService变量 private ExecutorService executor = null 2.执行对应任务时,首先生成线 ...
- 线程池ExecutorService中submit和execute区别
1.execute是接口Executor的方法 ,submit是Executor子接口ExecutorService的方法(ExecutorService接口继承了Executor接口,Executo ...
最新文章
- spring之DelegatingFilterProxy
- linux脚本执行进度条,shell脚本实现进度条
- JDK 9早期版本安装后的Windows注册表清理
- HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
- 每天学点SpringCloud(八):使用Apollo做配置中心
- HTTP协议和HTTPS协议
- -webkit-filter
- ipadpro画流程图_Paper 推出适用于快速制作流程图的 Think 套件
- 设备综合效率OEE:基于数采的OEE优化分析
- GC算法精解(五分钟让你彻底明白标记/清除算法)
- 国密(3)- 预主密钥/主密钥计算和Finished消息的加解密
- WiFi温湿度传感器开发
- Leetcode刷题面试题 16.14. 最佳直线
- JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何 设计。
- 接上一篇Trao文本行数及省略号问题
- 漏洞payload 靶机_【HTB系列】靶机Bitlab的渗透测试
- Java介绍,什么是Java?
- C#跑马灯抽签小程序
- 元宇宙之NFT行业分析:中国数字藏品行业有望走向规范化、差异化
- html中选择字体的元素,深入探讨CSS中字体元素