线程池,及7大参数,4大拒绝策略详解
线程的生命周期有:创建、就绪、运行、阻塞、死亡。在阿里的Java开发手册中,规定是不允许我们自己创建线程的,要用线程池来管理。
线程池是一种用于管理和重用线程的机制,它可以帮助提高多线程应用程序的性能和效率。线程池在多线程编程中广泛使用,可以控制并发线程的数量,减少线程创建和销毁的开销。
1.线程池的种类
序号 | 种类 | 场景 |
---|---|---|
1. | SingleThreadExecutor | 单线程线程池,适用于需要保证顺序执行的场景 |
2. | FixedThreadExecutor | 固定大小线程池,适用于负载比较重的长期任务 |
3. | CachedThreadPool | 可缓存线程池,适用于执行大量的短期异步任务的场景 |
4. | ScheduledThreadPool | 定时任务线程池,适用于需要定时执行任务的场景 |
以上就是一些基础的线程池的种类了,在实际的开发中我们也可以使用ThreadPoolExecutor来自定义我们的线程池。
2.自定义线程池的参数
上面我们有提到说可以自定义我们的线程池,那么就来列出七个需要的线程池的参数
序列 | 参数名 | 含义 |
---|---|---|
1. | corePoolSize | 核心线程数 |
2. | maximumPoolSize | 最大线程数(必须大于核心线程数) |
3. | keepAliveTime | 空闲线程的存活时间 |
4. | Unit | 时间单位 |
5. | workQueue | 用于存放任务的队列 |
6. | threadFactory | 线程工厂、用来创建新线程 |
7. | handler | 处理 |
3.代码实现
4.四大拒绝策略
在线程池中,当任务提交到线程池执行时,如果线程池无法接受新任务,就会采取一种拒绝策略来处理。Java 中的ThreadPoolExecutor 提供了四种默认的拒绝策略,你可以在构造线程池时选择其中一种,也可以自定义拒绝策略。