/**
* 自定义线程池,七大参数和四大拒绝策略
*/
public class ExecutorDome {
public static void main(String[] args) {
ExecutorService executors = new ThreadPoolExecutor(
2,//核心线程数量
5,//线程池最大线程数量
/**
* 多余的空闲线程存活时间。当前线程池数量超过corePoolSize时,
* 空闲时间到达keepAliveTime值时,多余空闲线程会被销毁直到只剩下corePoolSize个线
*/
3, //超时时间
TimeUnit.MINUTES,//超时时间单位
new LinkedBlockingDeque<>(3),//任务队列,被提交但尚未执行的任务
Executors.defaultThreadFactory(),//表示生成线程池中的工作线程的线程工厂,用于创建线程,一般为默认线程工厂即可
new ThreadPoolExecutor.AbortPolicy());//拒绝策略,线程池和队列都占满之后的策略,1.
/**
* 四种拒绝策略
* 1. new ThreadPoolExecutor.AbortPolicy() 超出队列,抛出异常,会丢弃
* 2. new ThreadPoolExecutor.DiscardPolicy() 超出队列,不会抛出异常,会丢弃
* 3. new ThreadPoolExecutor.DiscardOldestPolicy() 尝试和第一个竞争,不会抛出异常,会丢弃
* 4. new ThreadPoolExecutor.CallerRunsPolicy() 那里来的去哪里 让main线程执行
*/
}
}
线程池自定义的七大参数和四大策略
最新推荐文章于 2024-03-17 00:08:06 发布