ThreadPoolExecutor参数说明

ThreadPoolExecutor参数说明

corePoolSize(核心或者常驻,比如银行有10个窗口,平常只开放5个)
maximumPoolSize(最大线程数量,银行有10个窗口)
keepAliveTime(银行有10个窗口,只开放5个,忽然来了很多人,临时开放很多接口,结束后恢复常驻线程时间)
unit - keepAliveTime (参数的时间单位)
workQueue(常驻线程用完了,就会放到阻塞队列中)
threadFactory (执行程序创建新线程时使用的工厂)
RejectedExecutionHandler (拒绝策略,银行人已经满了叫你去别的银行处理)

拒绝策略

JDK内置拒绝策略
在这里插入图片描述

如下代码会产生拒绝默认策略

    public static void main(String[] args) throws InterruptedException {
        //一池五线程
        //阿里巴巴开发手册:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式手动创建。
        //Executors返回线程池对象可能会产生OOM

        //corePoolSize - 池中所保存的线程数,包括空闲线程。(核心或者常驻,比如银行有10个窗口,平常只开放5个)
        //maximumPoolSize - 池中允许的最大线程数。(最大线程数量,银行有10个窗口)
        //keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。(银行有10个窗口,只开放5个,忽然来了很多人,临时开放很多接口,结束后恢复常驻线程时间)
        //unit - keepAliveTime 参数的时间单位。
        //workQueue - 执行前用于保持任务的队列。此队列仅保持由 execute 方法提交的 Runnable 任务。(常驻线程用完了,就会放到阻塞队列中)
        //threadFactory - 执行程序创建新线程时使用的工厂。
        ExecutorService executorService =new java.util.concurrent.ThreadPoolExecutor(
                2,
                3,
                1L,
                TimeUnit.SECONDS,
                new LinkedBlockingQueue<>(3),
                Executors.defaultThreadFactory(),
                new java.util.concurrent.ThreadPoolExecutor.AbortPolicy()
        );
        //ExecutorService executorService = Executors.newFixedThreadPool(5);

        try {
            for (int i=0;i<20;i++){
                executorService.execute(new Thread(() ->
                    System.out.println(Thread.currentThread().getName()+"办理业务")
                ));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            executorService.shutdown();
        }
    }

在这里插入图片描述

阿里巴巴java开发手册,说明线程不能自行显式创建,不能用Executors去创建

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值