s-day06-线程池的创建--方式一(建议使用)

This commit is contained in:
2026-08-06 16:18:05 +08:00
parent 9adf26f287
commit 7d43d45d32
@@ -0,0 +1,44 @@
package com.inmind.threadpool10;
import java.util.concurrent.*;
/*
在java中使用一个接口表示线程池ExecutorService
如何获取线程池对象??
方式一:直接创建实现类ThreadPoolExecutor 的对象
方式二:Executors(线程池)的静态方法
方式一的构造方法:
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,
TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)
参数一:corePoolSize,指定线程池核心线程的数量
参数二:maximumPoolSize,指定线程池的最大线程数量
参数三:keepAliveTime,指定临时线程的存活时间
参数四:unit,指定临时线程存活时间单位(秒,分,时,天)
参数五:workQueue 指定线程池的任务队列
参数六:threadFactory,指定线程池的线程工厂
参数七:handler,指定线程池的任务拒绝策略
注意:
1.临时线程什么时候会创建??
新任务提交到线程池,发现所有的核心线程都被占用,任务队列也满了,并且还可以创建临时线程时,才会创建新的临时线程
2.什么时候会开始拒绝任务???
当所有的核心线程和临时线程都在忙,而且任务对列也都满了,新的任务还来,线程池就开始拒绝任务
*/
public class Demo12 {
public static void main(String[] args) {
//线程池的多态
ExecutorService threadpool = new ThreadPoolExecutor(
3,
5,
8,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(4),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy()
);
}
}