JDK自带线程池
- Executors.newFixedThreadPool(int) :一池N线程
- Executor.newSingleThreadExecutor():一个任务一个任务的执行,一池一线程
- Executors.newCachedThreadPool():线程池根据需求创建线程,可扩容,遇强则强
自定义线程池中七个参数代表的含义
- int corePoolSize:常驻线程数量
- int maximunPoolSize:最大线程数量
- long keepAliveTime:存活时间
- TimeUnit unit:时间单位
- BlockingQueue<Runanble> workQueue:阻塞队列
- ThreadFactory threadFactory:线程工厂,也叫线程自定义创建
- RejectedExecutionHandler handler:拒绝策略
四种拒绝策略
- AbortPolicy(默认):直接抛出RejectedExecutionExecution
- callerRunsPolicy:调用者运行 一种调节机制,改策略既不会抛弃任务,也不会抛出异常,而是将某些任务回退给调用者,从而降低新任务的流量
- DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加入到队列中
- DiscardPolicy:该策略默默地丢弃无法处理的任务,不做任何处理也不抛出异常
简化案例:
/* int corePoolSize = 2;最小线程数
int maximumPoolSize = 5;最大线程数
long keepAliveTime = 2L;存活时间
TimeUnit timeUnit = TimeUnit.SECONDS; //时间单位
ArrayBlockingQueue 阻塞队列
Executors.defaultThreadFactory() 默认的线程工厂
ThreadPoolExecutor.AbortPolicy()) 拒绝策略
*/
public class demo1 {
public static void main(String[] args) {
int corePoolSize = 2;//最小线程数
int maximumPoolSize = 5;//最大线程数
long keepAliveTime = 2L;// 存活时间
TimeUnit timeUnit = TimeUnit.SECONDS; //时间单位
//ArrayBlockingQueue 阻塞队列
// Executors.defaultThreadFactory() 默认的线程工厂
// ThreadPoolExecutor.AbortPolicy()) 拒绝策略
ExecutorService executor = new ThreadPoolExecutor(
2, 5, 2l,
TimeUnit.SECONDS, new ArrayBlockingQueue<>(3),
Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
}
}
网友评论