多线程-线程池02

线程池好处 ?

在这里插入图片描述

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

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

相关类关系图

在这里插入图片描述

如何使用线程池创建线程

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

  1. 一种是通过已有的工具类Executors来创建
  2. 通过ThreadPoolExecutor这个类来进行创建。
    在这里插入图片描述

两种方式比较

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

常用的类

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值