Java 并发面试题, Java 线程池有哪些拒绝策略?
Java 并发面试题, Java 线程池有哪些拒绝策略?
QA
Step 1
Q:: Java 线程池有哪些拒绝策略?
A:: Java 线程池有四种主要的拒绝策略:
1.
AbortPolicy(默认):直接抛出RejectedExecutionException,阻止系统正常工作。
2.
CallerRunsPolicy:由调用线程处理该任务,避免任务丢失。
3.
DiscardPolicy:直接丢弃任务,不抛出异常。
4.
DiscardOldestPolicy:丢弃最早的未处理任务,然后尝试重新提交新任务。
Step 2
Q:: 什么是线程池?为什么使用线程池?
A:: 线程池是一种多线程处理方式,它能够降低资源消耗,提高响应速度,增强线程管理的稳定性和可控性。使用线程池可以减少每次创建和销毁线程的开销,优化资源利用率。
Step 3
Q:: 如何创建一个线程池?
A:: Java 提供了多种创建线程池的方法,最常用的是通过Executors类:
1. newFixedThreadPool(int nThreads)
:创建一个固定线程数量的线程池。
2. newCachedThreadPool()
:创建一个会根据需要创建新线程的线程池。
3. newSingleThreadExecutor()
:创建一个单线程的线程池。
4. newScheduledThreadPool(int corePoolSize)
:创建一个定时线程池。
Step 4
Q:: 线程池的核心参数有哪些?
A:: 线程池的核心参数包括:
1.
corePoolSize:核心线程数。
2.
maximumPoolSize:最大线程数。
3.
keepAliveTime:非核心线程的闲置超时时间。
4.
unit:keepAliveTime的时间单位。
5.
workQueue:任务队列。
6.
threadFactory:线程工厂。
7.
handler:拒绝策略。
Step 5
Q:: 什么是线程池的饱和策略?
A:: 线程池的饱和策略是指在线程池无法接受新的任务时的处理方式,主要包括AbortPolicy、CallerRunsPolicy、DiscardPolicy和DiscardOldestPolicy等四种策略。