面试题答案
一键面试在任务内部捕获异常
- 线程池运行状态:不会影响线程池的整体运行状态,即使任务出现异常,线程池依然可以继续接收和执行新任务。
- 线程复用:线程会被复用。任务结束后,无论是否捕获异常,只要线程池中的线程数量未达到核心线程数,线程就会被保留在池中等待新任务。
- 任务执行连续性:当前任务的执行连续性被打断,但不影响其他任务。捕获异常后,任务内后续代码会根据异常处理逻辑执行,不影响线程池对其他任务的调度执行。
使用UncaughtExceptionHandler
- 线程池运行状态:默认情况下,不会导致线程池停止运行,除非异常使得线程无法继续工作。
UncaughtExceptionHandler
主要用于处理未捕获异常,让开发者有机会进行日志记录等操作。 - 线程复用:若线程因异常而终止,可能影响线程复用。当线程执行任务抛出未捕获异常,由
UncaughtExceptionHandler
处理后,若线程异常终止,线程池会创建新线程代替,影响线程复用。 - 任务执行连续性:当前任务执行终止,但不影响其他任务。
UncaughtExceptionHandler
处理异常不干扰线程池调度其他任务执行。