当前位置:   article > 正文

ThreadPoolExecutor和ThreadPoolTaskExecutor线程池_threadpoolexecutor用哪个包

threadpoolexecutor用哪个包

java开发中使用的线程池一般是ThreadPoolTaskExecutor或者ThreadPoolExecutor两个,前者是spring提供的,后者是JDK自带的,在java.util.concurrent包中。

ThreadPoolExecutor

ThreadPoolExecutorjava.util.concurrent包Executor接口的实现类,也就是我们说的java中的线程池类,体系结构如下:

java.util.concurrent.Executor 负责线程的使用和调度的根接口
        |--ExecutorService 子接口: 线程池的主要接口
                |--ThreadPoolExecutor 线程池的实现类
                |--ScheduledExceutorService 子接口: 负责线程的调度
                    |--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor,实现了ScheduledExecutorService

ThreadPoolExecutor类构造函数的成员变量

  1. corePoolSize:  指定了线程池中的线程数量,它的数量决定了添加的任务是开辟新的线程去执行,还是放到workQueue任务队列中去;在创建了线程池后线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从这2个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建corePoolSize个线程或者一个线程。默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中;
  2. maximumPoolSize:  指定了线程池中的最大线程数量,这个参数会根据你使用的workQueue任务队列的类型,决定线程池会开辟的最大线程数量;
  3. keepAliveTime:  当线程池中空闲线程数量超过corePoolSize时,多余的线程会在多长时间内被销毁;默认情况下,只有当线程池中的线程数大于corePoolSize时,keepAliveTime才会起作用,直到线程池中的线程数不大于corePoolSize,即当线程池中的线程数大于corePoolSize时,如果一个线程空闲的时间达到keepAliveTime,则会终止,直到线程池中的线程数不超过corePoolSize但是如果调用了allowCoreThreadTimeOut(true)方法,在线程池中的线程数不大于corePoolSize时,keepAliveTime参数也会起作用,直到线程池中的线程数为0;
  4. unit: keepAliveTime的单位
  5. workQueue: 任务队列,被添加到线程池中,但尚未被执行的任务;它一般分为直接提交队列(SynchronousQueue )、有界任务队列、无界任务队列、优先任务队列几种;
  6. threadFact
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/104674
推荐阅读
  

闽ICP备14008679号