线程池的执行过程如下:

  1. 创建线程池,包括核心线程数、最大线程数、等待队列和拒绝策略等属性。

  2. 当任务进来时,线程池会先判断当前线程数是否小于核心线程数,如果是,就创建新的线程来执行任务;如果不是,就将任务放入等待队列中。

  3. 如果等待队列已满,线程池还会判断当前线程数是否小于最大线程数,如果是,就创建新的线程来执行任务;如果不是,就执行拒绝策略,例如抛出异常或者直接丢弃任务。

  4. 当线程执行完一个任务后,会去等待队列中取出下一个任务进行执行,如果等待队列中没有任务了,则该线程会被销毁。

  5. 当线程池不再需要使用时,需要调用线程池的shutdown方法来关闭线程池,该方法会等待所有任务执行完毕后再关闭线程池。

针对题目中的情况,假设当前线程池中有3个线程在执行任务,还有2个任务在等待队列中,此时有20个线程进来,线程池的执行过程如下:

  1. 前5个线程会被分配到5个核心线程中执行任务。

  2. 接下来的10个线程会被放入等待队列中。

  3. 当等待队列中的任务执行完后,后面5个线程会被分配到5个新的线程中执行任务。

  4. 当所有任务执行完后,线程池中的所有线程都会被销毁。

### 线程池的执行过程说一下比如核心5最大数10等待3此时有20个线程进来。

原文地址: http://www.cveoy.top/t/topic/bgHn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录