多线陈第五章-线程池

1,常见的4大线程池

public static void main(String[] args) {
        //只有一个线程的线程池
        ExecutorService single = Executors.newSingleThreadExecutor();
        //创建可缓存的线程池,线程池线程个数最大可以达到Integer.MAX_VALUE,线程自动回收
        Executors.newCachedThreadPool();
        //固定线程数的线程池
        Executors.newFixedThreadPool(10);
        //创建可以延迟执行任务的线程池
        Executors.newScheduledThreadPool(20);
   }

2,线程池常用参数

  • corePoolSize 核心线程数
  • maximunPoolSize 最大线程数
  • keepAliveTime 当线程池中得线程数大于核心线程数时并且线程是闲置状态,线程存活得最大时间
  • TimeUnit 存活时间的时间单位
  • workQueue 用于保存等待执行的任务的阻塞队列,比如基于数组的有界ArrayBlockingQueue、基于链表的无界LinkedBlockingQueue、最多只有一个元素的同步队列SynchronousQueue及优先级队列PriorityBlockingQueue等
  • ThreadFactory:创建线程的工厂
  • RejectedExecutionHandler:饱和策略,当队列满并且线程个数达到maximunPoolSize后采取的策略,比如AbortPolicy(抛出异常)、CallerRunsPolicy(使用调用者所在线程来运行任务)、DiscardOldestPolicy(调用poll丢弃一个任务,执行当前任务)及DiscardPolicy(默默丢弃,不抛出异常)
posted @ 2023-07-19 17:42  浪成于微澜之间  阅读(17)  评论(0)    收藏  举报