Java中的线程池

前言

本文只会介绍一下Java中的原生线程池及相关的工具类:ThreadPoolExecutorScheduledThreadPoolExecutorExecutors

ThreadPoolExecutor

ThreadPoolExecutorJava原生提供的线程池执行类。

ThreadPoolExecutor构造方法中的参数用途:

  1. corePoolSize:线程池的核心线程数,这些线程默认不会被销毁。但是初始化线程池的时候可能线程池中的线程数小于核心线程数。
  2. maximumPoolSize:线程池最大线程数。最大线程数必须不小于核心线程数。
  3. keepAliveTime:默认情况下,非核心线程的存活时间(空闲线程等待任务最大时间)。如果调用allowsCoreThreadTimeOut()方法设置为允许核心线程超时,则核心线程在等待超过keepAliveTime的时间也会被销毁。
  4. unitkeepAliveTime的时间单位。
  5. workQueue:阻塞的工作队列,用于存放未被处理的任务。
  6. threadFactory:用于创建线程的线程工厂。
  7. handler:超过最大线程数和工作队列长度时的处理策略。

ScheduledThreadPoolExecutor

ScheduledThreadPoolExecutorThreadPoolExecutor的子类。这个类和ScheduledThreadPoolExecutor不同的是,它可以延迟一定时间执行任务或者定期执行任务,但是不保证执行时间。

Executors

线程池相关的工具类,提供四种实用的线程池构建方法:

  1. newSingleThreadExecutor:创建只有一个工作线程的线程池。该线程池是一个核心线程数和最大线程数为1的线程池,线程池内有一个无限长度的等待队列(LinkedBlockingQueue)。
  2. newFixedThreadPool:创建固定线程数的线程池。该线程池是一个核心线程数和最大线程数相等的线程池,线程池内有一个无限长度的等待队列(LinkedBlockingQueue)。
  3. newCachedThreadPool:创建工作线程可重用的线程池。该线程池是一个核心线程数为0,最大线程数为整形最大值的线程池,工作线程失效时间为1分钟,线程池内有一个无限长度的等待队列(SynchronousQueue)。
  4. newScheduledThreadPool:创建延迟执行或者是定时执行任务的线程池。其实就是调用了ScheduledThreadPoolExecutor的构造方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值