线程池笔记(一)
  TEZNKK3IfmPf 2023年11月15日 18 0

Executors 下有五类线程池
线程池笔记(一)

参数介绍:

  • corePoolSize:核心线程数,核心线程会一直存活。

  • maximumPoolSize:最大线程数,决定线程池最多可以创建多少线程。

  • keepAliveTime:空闲时间,当线程闲置超过空闲时间时就会被销毁。

  • uint:空闲时间的单位。

  • workQueue:缓冲队列

  • ArrayBlockingQueue:有界队列,有最大容量闲置。

  • LinkedBlockingQueue:无界队列,不限制容量。

  • SynchronousQueue:同步队列,内部没有缓冲区。

  • threadFactory:设置线程池工厂方法,用来创建新的线程方法,可以对线程的属性进行定制,例如线程的group,线程名等,一般使用默认的工厂类即可。

  • handler:线程池满时的拒绝策略,

  • Abort:线程池满后,提交新任务时,会抛出异常,默认拒绝策略。

  • Discard:线程池满后,提交新任务时,对任务进行丢弃。

  • CallerRuns:线程池满后,提交新任务时,会直接执行提交的任务。

  • DiscardOldest:线程池满后,提交新任务时,会丢弃最早提交的任务。

各类线程池调用参数方法

固定大小线程池:

  • -corePoolSize和maximumPoolSize:设置成指定的线程数

  • workQueue:LinkedBlockingQueue

源码
public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }

Cached线程池:

  • corePoolSize:0

  • maximumPoolSize:Integer.MAX_VALUE

  • keepAliveTime:60

  • workQueue:SynchronousQueue

源码
public static ExecutorService newCachedThreadPool() {
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue<Runnable>());
    }

单线程线程池:

  • corePoolSize和maximumPoolSize:1

源码
public static ExecutorService newSingleThreadExecutor() {
       return new FinalizableDelegatedExecutorService
           (new ThreadPoolExecutor(1, 1,
                                   0L, TimeUnit.MILLISECONDS,
                                   new LinkedBlockingQueue<Runnable>()));
   }

Scheduled线程池:

  • workQueue:DelayWorkQueue,按延迟时间获取任务的优先级队列

源码
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
       return new ScheduledThreadPoolExecutor(corePoolSize);
   }

线程池任务执行流程

线程池笔记(一)

调用方法:
  • 1、execute

  • 2、submit:可以返回一个future对象,根据future对象可以了解任务的执行情况,可以取消任务的执行,还可以获取任务的执行结果或者执行异常。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
TEZNKK3IfmPf