• 为什么要使用线程池?线程池参数


    (一) 为什么使用线程池

      1 降低资源消耗,提高线程利用率,降低创建和销毁线程的消耗

      2 提高响应速度,任务来了,直接有线程可用可执行,而不是创建线程,在执行


    (二) 线程池参数

      1 corePoolSize : 

         代表的是核心线程数,也就是正常情况下创建工作的线程数,表示最大允许被创建的线程数,

         比如当前任务较多,将核心线程数都用完了,还无法满足需求时,此时就会创建新的线程,

         但是线程池内线程总数不会超过最大线程数

      2 maxinumPoolSize:

          代表的是最大线程数,它与核心线程数相对应,表示最大允许被创建的线程数,比如当前任务较多

          将核心线程数都用完了,并且队列也满了,还无法满足需求时,此时就会创建新的线程,但是线程池内线程总数不会超过最大线程数。

      3 keepAlive , unit:

           表示超出核心线程数之外的线程的空闲存活时间,也就是核心线程不会消除,但是超出核心线程数的部分线程

           如果空闲一定时间则会被消除,我们可以通过setKeepAliveTime 来设置空闲时间。

      4 workQueue:

           用来存放待执行的任务,假设我们现在核心线程都已被使用,还有任务进来则全部放入队列,直到整个队列被放满

           但任务还再持续进入则会开始创建新的线程,直到数量到最大线程数。

      5 ThreadFactory:

           实际上是一个线程工厂,用来生产线程执行任务。我们可以选择使用默认的创建工厂,产生的线程都在同一个组内,拥有

         相同的优先级,且都不是守护线程。当然我们也可以选择自定义线程工厂,一般我们会根据业务来指定不同的线程工厂。

      6 Handler :

           任务拒绝策略,有两种情况,第一种是当我们调用shutdown等方法关闭线程池后,这时候即使线程池内部还没有执行完的任务

           但是由于线程池已经关闭,我们再继续想线程池提交任务就会遭到拒绝。另一种情况就是达到最大线程数,线程池已经没有能力

           继续处理新提交的任务时,这时也拒绝。

          


          坚持学习 !!

  • 相关阅读:
    程序是怎样跑起来的 第三章
    C#4.5-4.7学习总结
    第二周学习总结
    程序是如何跑起来的 第二章
    第一章读后感
    师生关系读后感
    C#学习总结
    我与计算机
    读《程序怎样跑起来》第一章有感
    读师生关系有感
  • 原文地址:https://www.cnblogs.com/misscai/p/14571575.html
Copyright © 2020-2023  润新知