ThreadPoolExecutor.execute发生异常时最后为啥要添加空worker对象
时间: 2023-11-23 10:29:10 浏览: 181
说说你对ThreadPoolExecutor的理解.docx
在 ThreadPoolExecutor 中,如果在执行任务时发生异常,那么会调用 `workerDone()` 方法,将执行任务的 worker 数量减一。如果此时 worker 数量为 0,则线程池中没有可用的线程了,因此无法继续执行任务。为了避免这种情况,ThreadPoolExecutor 在发生异常时会创建一个空的 Worker 对象并添加到 worker 队列中,这个空的 Worker 并不会执行任何任务,但它会占用一个线程,以确保线程池中至少有一个可用的线程,从而保证线程池的可用性。
阅读全文