ThreadPoolExecutor学习

1.先看一波线程池的构造方法

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler)
参数解释

corePoolSize 核心线程数
maximumPoolSize 最大线程数
keepAliveTime 可回收线程(最大线程数-核心线程数)的存活时间
TimeUnit 存活时间单位
BlockingQueue 阻塞队列
ThreadFactory 线程工厂
RejectedExecutionHandler 拒绝策略

BlockingQueue 如果任务数超出线程池处理能力时加入队列
常用的实现类有
ArrayBlockingQueue 数组结构
LinkedBlockingDeque 双向链表结构
SynchronousQueue 单元素队列,内部实现是TransferQueue,如下图Node节点,头尾都是h,

TransferQueue() {
            QNode h = new QNode(null, false); // initialize to dummy node.
            head = h;
            tail = h;
        }

RejectedExecutionHandler 有四种
CallerRunsPolicy 任务来时不用线程池线程执行,而是主线程
AbortPolicy 丢弃任务且抛异常
DiscardPolicy 丢弃任务不抛异常
DiscardOldestPolicy 丢弃队列最前面的任务,然后重新尝试执行任务

看一波实现

ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
                5,
                20,
                100,
                TimeUnit.SECONDS,
                //设置demo
                new ArrayBlockingQueue<>(10),
                //采用默认线程工厂
                Executors.defaultThreadFactory(),
                //设置拒绝策略
                new  ThreadPoolExecutor.DiscardPolicy()
        );

未完待续。。。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值