Java线程池详情

线程池所需参数

public ThreadPoolExecutor(int corePoolSize,//核心线程线程数
                          int maximumPoolSize,//最大可创建线程数
                          long keepAliveTime,//最大线程数据的闲置活跃时间
                          TimeUnit unit,//闲置活跃时间单位
                          BlockingQueue<Runnable> workQueue,//存放线程任务的队列、容器
                          ThreadFactory threadFactory,//创建检查时的工厂方法
                          RejectedExecutionHandler handler) {//线程池无法消费队列中的任务时,采用什么策略
    if (corePoolSize < 0 ||
        maximumPoolSize <= 0 ||
        maximumPoolSize < corePoolSize ||
        keepAliveTime < 0)
        throw new IllegalArgumentException();
    if (workQueue == null || threadFactory == null || handler == null)
        throw new NullPointerException();
    this.corePoolSize = corePoolSize;
    this.maximumPoolSize = maximumPoolSize;
    this.workQueue = workQueue;
    this.keepAliveTime = unit.toNanos(keepAliveTime);
    this.threadFactory = threadFactory;
    this.handler = handler;
}

任务阻塞队列BlockingQueue<Runnable> workQueue

  1. ArrayBlockingQueue (java.util.concurrent)
    1. 基于数组实现的有界限阻塞队列
  2. DelayedWorkQueue in ScheduledThreadPoolExecutor (java.util.concurrent)
    1. 专用延迟队列。为了与TPE声明相匹配、它只能持有RunnableScheduledFutures
  3. BlockingDeque (java.util.concurrent)//
    1. 双端队列接口
  4. SynchronousQueue (java.util.concurrent)
    1. 同步阻塞队列,可设置公平或者不公平;没有容量限制,插入和删除需要同时执行
  5. DelayQueue (java.util.concurrent)
    1. 延迟队列
  6.  LinkedBlockingQueue (java.util.concurrent)
    1. 基于链表实现的阻塞队列,可以指定容量,如果未指定容量,则容量默认为 Integer.MAX_VALUE。插入操作和删除操作都可能会被阻塞。
  7.  PriorityBlockingQueue (java.util.concurrent)
    1. 优先级队列

异常触发时需要执行的策略

  1. RejectedExecutionHandler handler
  2.     1.提示异常,拒绝执行多余的任务
  3. new ThreadPoolExecutor.AbortPolicy()
  4.     2.忽略堵塞队列中最旧的任务
  5. new ThreadPoolExecutor.DiscardOldestPolicy()
  6.     3.忽略最新的任务
  7. new ThreadPoolExecutor.DiscardPolicy()
  8.     4.使用调用该线程池的线程来run方法执行任务
  9. new ThreadPoolExecutor.CallerRunsPolicy()
  10.     5.自定义拒绝策略
  11. new RejectedExecutionHandler()

线程池执行原理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值