zoukankan      html  css  js  c++  java
  • ThreadPoolExecutor参数与拒绝策略

    ThreadPoolExecutor参数的含义  https://www.jianshu.com/p/0e228dc30793 

    资料

      1. **** 线程池之ThreadPoolExecutor使用 https://www.jianshu.com/p/f030aa5d7a28

      2.**** 线程池拒绝策略及有界无界队列 https://www.jianshu.com/p/80b14c4c1ff4
    线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:
      ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)

    • corePoolSize: 核心线程池大小
    • maximumPoolSize: 最大线程池大小
    • keepAliveTime: 线程最大空闲时间

        //当线程池中的线程数量大于 corePoolSize 时,如果某线程空闲时间超过 keepAliveTime ,线程将被终止。
        这样,线程池可以动态的调整池中的线程数。

    • unit: 线程池维护线程所允许的空闲时间的单位

        unit可选的参数为java.util.concurrent.TimeUnit中的几个静态属性:
        NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS。纳秒、微秒、毫秒、秒

    • workQueue: 线程池使用的缓冲队列

        ThreadPoolExecutor线程池的API文档中,一共推荐了三种等待队列,
        它们是:SynchronousQueue、LinkedBlockingQueue和ArrayBlockingQueue;
            同步队列 链接阻塞队列 数组阻塞队列

    • threadFactory: ThreadFactory 线程工厂,用于创建线程
    • handler: 线程池的拒绝策略

    问题
    1.拒绝策略什么时候使用
      核心线程 corePoolSize 、任务队列 workQueue 、最大线程 maximumPoolSize ,如果三者都满了,使用
      handler处理被拒绝的任务。
        handler有四个选择:
          ThreadPoolExecutor.AbortPolicy()
            抛出java.util.concurrent.RejectedExecutionException异常
          ThreadPoolExecutor.CallerRunsPolicy()
            重试添加当前的任务,他会自动重复调用execute()方法
          ThreadPoolExecutor.DiscardOldestPolicy()
            抛弃旧的任务
          ThreadPoolExecutor.DiscardPolicy()
            抛弃当前的任务

  • 相关阅读:
    selenium环境搭建
    noip2020游记
    [HNOI2007]分裂游戏——博弈论好题
    [SCOI2007]压缩——区间dp
    赛道修建——二分答案
    玩诈欺的小杉——异或优化的状压dp
    【佛山市选2013】排列——发现性质与转化问题
    电话线铺设——难实现的最小生成树
    备用钥匙——分情况讨论的好dp
    喝喝喝——稍加推导的好转化
  • 原文地址:https://www.cnblogs.com/jiuya/p/13833205.html
Copyright © 2011-2022 走看看