当线程池等待队列已满会开启新的线程。ThreadPoolExecutor线程池提供了两个方法:线程池执行某个任务前会执行beforeExecute()方法,执行后会调用afterExecute()方法查看ThreadPoolExecutor源码,在该类中定义了一个内部类Worker,ThreadPoolExecutor线程池的工作线程就是Worker类的实例,Worker实例在执行时会调用beforeExecute与afterExecute方法。部分代码已省略,线程执行前会调用beforeExecute,执行后会调用afterExecute方法。线程池中没有可以对阻塞队列进行处理的线程,就会一直等待下去照成死锁。适合给线程池提交相互独立的任务,而不是彼此依赖的任务,对于彼此依赖的任务,可以考虑分别提交给不同的线程池来处理。
暂无评论