package com.myspringboot.test;
import java.util.concurrent.*;
/*
* @Description: 自定义线程池
* maximumPoolSize CPU密集型 一般 核数+1
* maximumPoolSize IO密集型 核数*2 或者 核数/(1-阻塞系数)
* 阻塞系数 一般 0.8~0.9 乐观情况下取 0.9
* 拒绝策略
* AbortPolicy 异常中断处理
* CallerRunsPolicy 回退调用者
* DiscardPolicy 抛弃多出的线程
* DiscardOldestPolicy 抛弃等待最久的线程
* @Author: WDC
* @Date: 2020/3/19 15:53
**/
public class CustomThreadPool {
public static void main(String[] args) {
ExecutorService pool = new ThreadPoolExecutor(
2, 5,
3, TimeUnit.SECONDS,
new LinkedBlockingDeque<Runnable>(3),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardOldestPolicy()
);
try{
for (int i = 0; i < 9; i++) {
pool.execute(()->{
System.out.println(Thread.currentThread().getName()+"\t办理业务");
});
}
}catch(Exception e){
e.printStackTrace();
}finally{
pool.shutdown();
}
}
}
手写自定义线程池 代码演示
最新推荐文章于 2024-03-03 16:45:24 发布