Java线程池:带缓存的线程池newCachedThreadPool()详解
//带缓存的线程池 ExecutorService pool = Executors.newCachedThreadPool(); //newCachedThreadPool() public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); } //特点:核心线程=0,最大线程=Integer.MAX_VALUE,最大存活时间60s,同步队列(没有缓存功能) 为什么这个带缓存的线程池,同步队列又没有缓存功能这个带缓存的线程池使用的是SynchronousQueue作为任务队列,这个队列没有实际的缓存功能。当有新任务提交给线程池时,如果有空闲线程可用,就会立即使用空闲线程来执行任务;如果没有空闲线程可用,就会创建新的线程来执行任务。如果线程空闲时间超过指定的存活时间(60秒),那么这个线程就会被销毁。\n\n因此,虽然这个线程池被称为带缓存的线程池,但实际上它并没有实际的任务队列缓存功能。每个任务都需要等待一个空闲线程来执行,如果没有空闲线程,就会创建新的线程。这种机制可以根据任务的数量和执行时间动态地调整线程池中的线程数量,以提高线程的利用率和执行效率。
原文地址: https://www.cveoy.top/t/topic/p5c2 著作权归作者所有。请勿转载和采集!