假设开一家饭店,每一个服务员只能服务一个客户,有永久服务员和临时招聘服务员。
临时服务员一旦空闲超过一定时间就会被辞退。如果排队的人数过多,会赶走超出的顾客让他们下次再来。
public class 自定义线程池 {
public static void main(String[] args) {
/*
1、核心线程数量
2、最大线程数
3、空闲线程最长存活时间
4、时间单位
5、任务队列
6、创建线程工厂->从哪里获得线程(从哪里找人)
7、任务的拒绝策略
*/
ThreadPoolExecutor pool=new ThreadPoolExecutor(
3,//核心线程数量
6,//最大线程数量
60,
TimeUnit.SECONDS,//时间单位
new ArrayBlockingQueue<>(3),//任务队列
Executors.defaultThreadFactory(),//创建线程工厂---->制作线程
//任务拒绝策略单独存在没有意义专门为线程池服务,同时任务拒绝策略又是一个单独的个体
new ThreadPoolExecutor.AbortPolicy()//这是一个静态内部类,想要使用需要用类名调用--->任务拒绝策略
);
}
}