根据提供的代码,创建的线程池是一个自定义的ThreadPoolExecutor。根据代码中的参数设置,线程池的核心线程数和最大线程数都是threads,任务队列的大小是queues。线程池的拒绝策略是当任务无法加入队列时,直接抛出RejectedExecutionException异常。

往该线程池中塞入1000个请求时,如果线程池中的线程数量小于核心线程数(threads),新的任务会创建一个新的线程来处理。如果线程池中的线程数量大于等于核心线程数,但小于最大线程数,新的任务会加入到任务队列中等待执行。如果任务队列已满,但线程池中的线程数量仍未达到最大线程数,新的任务会创建一个新的线程来处理。如果线程池中的线程数量已经达到最大线程数,且任务队列已满,则会触发拒绝策略,抛出RejectedExecutionException异常。

根据问题描述,只有线程号511和512在运行,说明线程池中的线程数量已经达到最大线程数,并且没有任务被拒绝。这可能是因为任务的执行时间比较长,导致线程池中的其他线程还在执行之前的任务,没有空闲来处理新的任务。如果希望所有的任务都立即执行,可以考虑增加线程池的最大线程数或者减少任务的执行时间。

总结:线程池中的线程数量达到最大线程数后,新的任务会加入到任务队列中等待执行。如果任务队列已满,且线程池中的线程数量已经达到最大线程数,则会触发拒绝策略。线程池的拒绝策略可以根据实际需求进行定制。

标签: 综合


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