Java线程池介绍

    public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue
                              RejectedExecutionHandler handler) 
        this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue
             Executors.defaultThreadFactory(), handler);
    }

解释其中参数意思:

corePoolSize核心线程数:指线程池中维护的最小线程数量,即使他们处于空闲,也一直存在池子里,除非超过了存储时间。

maximunPoolSize最大线程数:指线程池中的最大容量。

keepAliveTime空闲线程存活时间:指当线程数大于核心线程数时,空闲线程在等待新任务到达的最大时间,如果超过这个时间还没有任务请求,该空闲线程就会被销毁。

unit空闲线程存活时间的单位:是指空闲线程存活时间的单位。

workQueue线程工作队列:是指将新加入的线程存起来的一个数据结构。有以下几种常见结构:ArrayBlockingQueue FIFO有界阻塞队列、LinkedBlockingQueue FIFO无限队列、PriorityBlockingQueue VIP、SynchronousQueue不缓存任务的阻塞队列。

threadFactory线程工厂:用来创建线程的,一个任务对应着一个线程。

handler超出线程数和工作队列时候的任务请求处理策略:如果超过了线程池的容量,那如何处理多余的任务呢?有以下几种方法:

策略1:ThreadPoolExecutor.AbortPolicy(默认)拒绝执行

策略2:ThreadPoolExecutor.CallerRunsPolicy调用 execute 方法的线程本身运行任务

策略3:ThreadPoolExecutor.DiscardOldestPolicy执行程序未关闭,则删除工作队列头部的任务

策略4:ThreadPoolExecutor.DiscardPolicy无法执行的任务被简单地删除 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值