标签:java Executors 创建 接口 线程 ExecutorService
概述
接口java.util.concurrent.ExecutorService
是Java中对线程池定义的一个接口
ThreadPoolExecutor实现ExecutorService接口,用于创建线程池
构造
//所有线程池最终都是通过这个方法来创建的
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
参数:
- corePoolSize: 核心线程数
- maximumPoolSize: 最大线程数
- keepAliveTime:最大时间
- unit:时间单位
- workQueue: 任务队列
- threadFactory:线程工厂
- handler: 处理阻塞时的程序
使用
java提供了java.util.concurrent.Executors
工厂类, 该类提供了一些静态方法,生成一些常用的线程池。
官方建议使用Executors工程类来创建线程池对象。
线程池分类
可缓存线程池
ExecutorService cachePool = Executors.newCachedThreadPool();
- 创建的都是非核心线程
- 最大线程数为Interge的最大值
- 空闲线程存活时间是1分钟
- 适用于生命周期短的任务,如果有大量耗时的任务,则不适该创建方式
单线程池
ExecutorService singlePool = Executors.newSingleThreadExecutor();
- 创建一个核心线程
- 保证任务按FIFO顺序一个个执行
固定线程数线程池
ExecutorService fixedPool = Executors.newFixedThreadPool(3);
- 创建固定数量的可复用的线程数
- 当线程数达到最大核心线程数,则加入队列等待有空闲线程时再执行
固定线程数,支持定时和周期性任务
ExecutorService scheduledPool = Executors.newScheduledThreadPool(5);
- 可用于替代handler.postDelay和Timer定时器等延时和周期性任务
使用线程池步骤
- 创建线程池对象。
- 创建Runnable、CallThread 接口实现类对象。
- 提交Runnable、CallThread 接口实现类对象。
- 关闭线程池(一般不用线程池时,或者程序退出时)
标签:java,Executors,创建,接口,线程,ExecutorService 来源: https://blog.csdn.net/lzy2213811239/article/details/122424719
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。