线程池的实现原理

2019-08-24  本文已影响0人  七月_JulyFY

当提交一个新任务到线程池时,线程池的处理流程如下:

1. 线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。
2. 线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如果工作队列满了,则进入下个流程
3. 线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线程来执行任务。如果已经满了,则交给饱和策略来处理这个任务
Abort 策略(默认) : 丢弃任务 并抛出异常
discard 策略:丢弃任务 但不抛出异常 不建议
CallerunsPolicy 策略 :绕过调用 run 方法 由调用者去执行当前任务
上一篇下一篇

猜你喜欢

热点阅读