线程-----线程池参数、线程池状态
分类:
文章
•
2022-11-05 15:36:30
线程池参数
- 1.corePoolSize:核心线程数,保持在线程池中线程的数量
- 2.maximumPoolSize:线程池允许的最大线程数
- 3.keepAliveTime/timeUnit:线程池中线程空闲不被释放的最大时间,配合timeUnit使用,为0表示永远不被释放
- 4.workQueue:BlockingQueue, 工作线程任务的阻塞队列,用来存放等待执行的任务,默认实现:LinkedBlockingQueue
- 5.threadFactory:线程池创建工厂,子类通过自定义实现接口“Thread newThread(Runnable r)” 通过工厂创建线程池具体的Thread线程。默认实现DefaultThreadFactory
常见拒绝策略:处理器handler(RejectedExecutionHandler):当workQueue无法存放新加任务,或添加新任务后线程池停止工作,使用设置的拒绝策略拒绝新加任务执行,可以用rejectedExcution来实现自己的拒绝策略。
- 1.默认拒绝策略:AbortPolicy:异常策略,直接抛出RejectedExecutionException异常
- 2.CallerRunsPolicy:调用方执行策略,当前调用线程或添加任务的线程执行,这种方式当线程池无法执行时,使用调用方资源来执行任务
- 3.DiscardPolicy:直接抛弃策略,对任务不做任何事情,忽略该任务,不执行不报错
- 4.DiscardOldestPolicy:抛弃最早任务策略,将workQueue的一个任务取出抛弃,将当前任务放入workQueue中执行
线程池状态
- 1.RUNNING:初始状态,运行中
- 2.SHUTDOWN:关闭状态,shutdown()方法后变为该状态,不再接受新任务,仍处理已添加任务
- STOP:停止状态,调用shutdownNow()方法后会从RUNNING状态进入到这个状态,此时不接受新任务,并且会将执行中的现线程中断
- TIDYING:整理状态,此时队列中任务数量已经是0
- TERMINATED:终结状态,由TIDYING状态后调用terminated()后进入该状态
线程池状态流转
