如果任务数量超过了线程池的数量,而你不希望让任务进入队列,可以考虑使用一个不包含工作队列的线程池。在 Java 的 ThreadPoolExecutor
中,通过将工作队列设置为 SynchronousQueue
或者通过调用 Executors.newCachedThreadPool()
创建线程池,可以实现不使用工作队列的线程池。
-
使用
SynchronousQueue
:ThreadPoolExecutor executor = new ThreadPoolExecutor( corePoolSize, // 核心线程数 maximumPoolSize, // 最大线程数 keepAliveTime, // 线程空闲时间 TimeUnit