学习笔记(10):Java并发编程精讲-线程池的创建和常用参数分析

立即学习:https://edu.csdn.net/course/play/26270/326867?utm_source=blogtoedu

一、 线程池的参数解释

1. corePoolSize

核心线程数,保持在线程池中激活的线程的数量

2. maximumPoolSize

线程池允许的最大线程数

3. keepAliveTime/timeUnit 

线程池中线程空闲不被释放的自大时间,配合timeUnit使用,为0表示永远不被释放。

4. workQueue

BlockingQueue<Runnable>,工作线程任务的阻塞队列,用来存放等待执行的任务,默认实现:LinkedBlockingQueue

5. threadFactory

线程池创建工厂,子类通过自定义实现接口,"Thread newThread(Runnable)" 通过工厂创建线程具体的Thread线程。默认实现:DefaultThreadFactory

6. handler(RejectedExecutionHandler)

当workQueue无法存放新加任务,或添加新任务后线程池停止工作,使用设置拒绝策略 拒绝新加任务的执行,可以使用rejectedExecution来实现自己的拒绝策略。默认拒绝策略:AbortPolicy,直接抛出异常

 

二、JAVA 提供的 4 种拒绝策略

1. CallerRunsPolicy:调用方执行策略,当前调用线程活添加任务的线程执行,这种方式当线程池无法执行时,使用调用方资源来执行任务

2. AbortPolicy:异常策略,直接抛出 RejectedExecutionException异常

3. DiscardPolicy:直接抛弃异常,对任务不做任何事情,忽略该任务,不执行,不报错。

4. DiscardOldestPolicy:抛弃最早任务策略,将 workQueue 的一个任务取出抛弃,将当前任务放入 workQueue 中执行。

 

三、线程池的 5 种状态

RUNNING:初始状态,运行中

SHUTDOWN:关闭状态,shutdown()方法后变为该状态,不再接受新任务,仍处理已添加任务

STOP:停止状态,调用shutdownNow()方法后RUNNING状态进入到这个状态,此时不接受新任务,并且会将执行中的线程中断。

TIDYING:整理状态,此时队列中的任务数量已经是 0 

TERMINATED:终结状态,由TIDYING状态后调用terminated()后进入该状态

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charlven

你的鼓励将是我最大的动力哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值