线程池

参考博客 

参考、线程池的基本原理,看完就懂了

线程池的五种状态

 

线程池Fork/join???????

ThreadPoolExecutor类中有个final类型的 AtomicInteger 变量 ctl,一共32位,前3位记录了线程池的状态,后面的29位记录了当前线程池中活跃的线程数

一、线程池的构造方法解释



    /**
     * 线程池创建的构造方法
     * @param corePoolSize 核心线程数目 (最多保留的线程数)
     * @param maximumPoolSize 最大线程数目 线程池允许创建的最大线程数
     * @param keepAliveTime  非核心线程空闲的时间(针对非核心线程)
     * @param unit 非核心线程 空闲生存时间
     * @param workQueue 阻塞(任务)队列
     *                  可选的队列有
     *                  1、ArrayBlockingQueue 数组结构的有界阻塞队列,队列按FIFO(先进先出)原则对元素进行排序。
     *                  2、LinkedBlockingQueue 链表结构的无界阻塞队列 队列按FIFO(先进先出)原则对元素进行排序。
     *                  3、SynchronousQueue 不存储元素的阻塞队列
     *                  4、DelayedWorkQueue-priorityBlockingQueue 一个具有优先级的无界阻塞队列
     * @param threadFactory 创建线程的工厂,可以为线程起一个好名字
     * @param handler 拒绝策略。队列和线程池都满了,线程池处于饱和状态,一种处理新提交任务的策略 默认是 AbortPolicy
     *                 1、AbortPolicy 默认拒绝策略  丢弃任务并且抛出RejectExecutionException
     *                 2、DiscardPolicy 丢弃新提交的任务但是不抛出异常 策略
     *                 3、DiscardOldestPolicy 喜新厌的丢失策略。丢失队列最前面的任务,然后重新提交新任务
     *                 4、CallsPolicy 由调用线程处理此任务
     *
     */
public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler) {
              //-----------------
    }

二、创建线程池的方式以及种类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值