线程池参数corePoolSize核心线程数,最大线程数maximumPoolSize,线程多长时间不执行任务就会终止由execute方法完成。线程池的执行顺序首先检测线程池的运行状态,如果没有运行,直接拒绝。如果workCount=corePoolSize,且线程池阻塞队列未满,则向阻塞队列中添加任务。如果workCount>=corePoolSize&&workCount=maximumPoolSize,且阻塞队列已满,任务将按照拒绝策略进行处理。默认是直接抛出异常包thread;importorg.junit.Test;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.LinkedBlockingQueue;importjava.util.concurrent.ThreadPoolExecutor;importjava.util.concurrent.TimeUnit;/***@Author:jeremy*@Date:*@desc:*/publicclassThreadPoolTest{intcorePoolSize=3;intmaximumPoolSize=5;@Testpublicvoidtest(){BlockingQueueworkQueue=newLinkedBlockingQueue<>(5);ThreadPoolExecutor执行器=newThreadPoolExecutor(corePoolSize,maximumPoolSize,1L,TimeUnit.MILLISECONDS,workQueue);//执行任务,在达到核心线程数之前,创建线程executor.execute(newTestTask());executor.execute(newTestTask());executor.execute(newTestTask());当满时,任务被添加到队列中executor.execute(newTestTask());executor.execute(newTestTask());executor.execute(newTestTask());executor.execute(newTestTask());executor.execute(newTestTask());//阻塞队列已满,任务未达到最大线程数executor.execute(newTestTask());executor.execute(newTestTask());//任务大于最大线程数,执行拒绝策略executor.execute(newTestTask());}}classTestTaskimplementsRunnable{@Overridepublicvoidrun(){try{TimeUnit.DAYS.sleep(1);}catch(InterruptedExceptione){e.printStackTrace();}}}汇总进程核心线程数→加入队列→加入最大线程数→达到最大线程数按照拒绝策略处理测试代码(throwexceptionorignore)