线程池好处 ?

多线程-线程池02

像个池子一样管理线程,之前创建一个线程需要开辟虚拟机栈、本地方法栈、程序计数器等私有的内存空间,在销毁的时候又要回收这些资源,频繁的创建于销毁会浪费大量的系统资源。
好处:

  1. 管理并复用线程,控制最大并发数等。
  2. 有任务线程队列缓存策略和拒绝机制
  3. 实现某些与时间相关的功能,如定时任务、周期执行等。

相关类关系图

多线程-线程池02

如何使用线程池创建线程

一般来说,工作里面有两种方式来创建,

  1. 一种是通过已有的工具类Executors来创建
  2. 通过ThreadPoolExecutor这个类来进行创建。
    多线程-线程池02

两种方式比较

  • Executors创建的话,更加简单,因为内部都已经封装好了参数
  • ThreadPoolExecutor创建的话更加灵活一点,其中有7个参数多线程-线程池02
    corePoolSize: 核心线程数
    maximumPoolSize: 最大线程数
    keepAliveTime: 线程空闲时间,当达到这个时间的时候就会被摧毁,需要注意的是不包括核心线程数corePoolSize
    TimeUnit: keepAliveTime的单位
    workQueue: 缓存队列,当线程数达到maximumPoolSize时候,就会进入到缓存队列里取,如: ArrayBlockingQueue、LinkedB lockingQueue
    threadFactory :表示线程工厂,生产一组相同任务的线程
    handler: 拒绝策略,当达到workQueue的时候可以通过拒绝策略拒绝请求,这是一种限流保护。
  • 阿里java开发手册多线程-线程池02

常用的类

ScheduledThreadPoolExecutor: 周期性的执行定时任务

相关文章:

  • 2021-11-18
  • 2022-02-06
  • 2021-12-29
  • 2021-09-30
  • 2022-02-03
  • 2021-12-11
猜你喜欢
  • 2022-02-26
  • 2021-06-16
  • 2021-11-06
  • 2021-12-28
相关资源
相似解决方案