捕获线程池里面的异常,要怎么做? 线程池的参数有哪些,有了解吗?有啥要注意的? 线程池的饱和策略知道不? 线程池的工作原理了解过吗?
时间: 2023-12-05 22:50:02 浏览: 58
了解线程池
1. 捕获线程池里面的异常,可以通过设置ThreadPoolExecutor的UncaughtExceptionHandler来捕获未处理的异常。
2. 线程池的参数包括核心线程数、最大线程数、线程空闲时间、任务队列、线程工厂等。其中,核心线程数表示线程池中一直存在的线程数量,最大线程数表示线程池中最多能存在的线程数量,线程空闲时间表示线程在空闲时存活的时间,任务队列用于存储尚未执行的任务,线程工厂用于创建新的线程。
3. 线程池的饱和策略包括AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy和DiscardPolicy。其中AbortPolicy是默认的饱和策略,当任务队列已满且线程池中的线程数达到最大线程数时,新任务将被拒绝并抛出RejectedExecutionException异常。CallerRunsPolicy会将任务回退到调用者处执行。DiscardOldestPolicy会丢弃任务队列中最旧的任务。DiscardPolicy会直接丢弃新提交的任务。
4. 线程池的工作原理如下:当有任务提交时,线程池会先判断核心线程数是否已满。如果核心线程数未满,则创建新的线程执行任务。如果核心线程数已满,则判断任务队列是否已满。如果任务队列未满,则将任务加入队列中等待执行。如果任务队列已满,则判断线程池中线程数量是否达到最大线程数。如果线程数量未达到最大线程数,则创建新的线程执行任务。如果线程数量已达到最大线程数,则根据饱和策略处理新提交的任务。
阅读全文