创建线程池
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L,
TimeUnit.SECONDS, new SynchronousQueue());
参数分析
public ThreadPoolExecutor(int corePoolSize, //核心线程数
int maximumPoolSize, //最大线程数
long keepAliveTime, // 非核心线程不活动存活时间
TimeUnit unit, //非核心线程 不活动销毁时间单位
BlockingQueue<Runnable> workQueue,//阻塞队列
ThreadFactory threadFactory,//线程池创建线程工厂,这个线程池创建的线程全部通过这个工厂创建(可以添加一些前缀名称方便通过日志查看线程)
RejectedExecutionHandler handler //线程都在处理任务且任务队列也满了,拒绝处理策略
) {
dosomething.....
}
参数选择
BlockingQueue
java8提供了BlockingQueue 的实现有以下几种
ArrayBlockingQueue 有大小限制的队列
LinkedBlockingQueue 可以一直存元素的队列 可能会内存溢出
SynchronousQueue 交换队列 , 不存元素,效率很高
…
ThreadFactory
自定义实现 ThreadFactory 去重新设置线程名称
RejectedExecutionHandler
ThreadPoolTaskExecutor对象使用
文章详细介绍了如何创建ThreadPoolExecutor,包括参数如核心线程数、最大线程数、存活时间、阻塞队列类型、线程工厂和拒绝策略的选择。并提到了不同类型的BlockingQueue如ArrayBlockingQueue、LinkedBlockingQueue和SynchronousQueue的特点。

被折叠的 条评论
为什么被折叠?



