线程池

线程池的目的

固定数量的线程来执行多数的任务,来避免反复创建和销毁线程所带来的的开销问题

线程池的启动

  • corePoolSize
  • maxPoolSize
  • keepAliveTime
  • workQueue
  • threadFactory
  • Handler

添加线程的规则

  1. 如果线程数小于corePooSize,即使其他线程处于空闲状态也会创建新的线程
  2. 如果线程数大于等于corePooSize小于maxPoolSize,则将任务放入队列
  3. 如果队列已满,并且线程数小于maxPoolSize,则创建一个新线程来运行任务
  4. 如果队列已满并且线程数大于或等于maxPoolSize,则拒绝该任务

综上:通过调节核心线程参数和最大线程数以及工作队列值的大小可以创建不同类型的线程池,比如固定线程池,

线程池的停止 

  • shutdown:不会立即停止,但不能再接受任务
  • isShutdown:只要执行了shutdown方法就会返回true
  • isTerminated:直到所有任务执行完毕返回true
  • awaitTermination:检测阻塞的固定时间内能否全部执行完
  • shutdownNow:立刻终止线程并返回任务集合

线程池的拒绝策略

  • AbortPolicy:throw RejectedExecutionException
  • DiscardOldestPolicy:丢弃最旧未处理任务
  • DiscardPolicy: 默默地silently discards
  • CallerRunsPolicy:谁提交谁执行

线程池的状态

  • RUNNING:接受新任务并处理队列中的任务
  • SHUTDOWN:不接受新任务但处理排队任务
  • STOP:不接受新任务,也不处理队列中的任务,并停止正在进行的任务
  • TIDING:所有任务都已经停止,workCount为0时,并将运行terminated()钩子方法
  • TERMINATED:terminated方法运行完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值