线程池参数:
- corePoolSize:线程池核心线程个数
-
workQueue:用于保存等待执行的任务的阻塞队列。
比如基于数组的有界ArrayBlockingQueue、,基于链表的无界LinkedBlockingQueue,最多只有一个元素的同步队列SynchronousQueue,优先级队列PriorityBlockingQueue,具体可参考 https://www.atatech.org/articles/81568 -
maximunPoolSize:线程池最大线程数量。
- ThreadFactory:创建线程的工厂
- RejectedExecutionHandler:饱和策略,当队列满了并且线程个数达到maximunPoolSize后采取的策略,比如AbortPolicy(抛出异常),CallerRunsPolicy(使用调用者所在线程来运行任务),DiscardOldestPolicy(调用poll丢弃一个任务,执行当前任务),DiscardPolicy(默默丢弃,不抛出异常)
- keeyAliveTime:存活时间。如果当前线程池中的线程数量比核心线程数量要多,并且是闲置状态的话,这些闲置的线程能存活的最大时间
- TimeUnit,存活时间的时间单位
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( 1, 2, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(1), new ThreadPoolExecutor.DiscardPolicy() )