Java 并发库中有哪些线程池?它们之间有何区别?
Java 并发库中的线程池是 Java 线程管理的核心工具之一,主要通过 java.util.concurrent 包中的 ExecutorService 接口和它的各种实现类来提供。使用线程池的主要目的是为了提高系统的性能和资源利用率,避免频繁地创建和销毁线程带来的开销。
1. FixedThreadPool
●特点:FixedThreadPool 是一个有固定数量线程的线程池。池中的线程数量固定,不会因为任务的增多而增加线程数量。新任务到来时,如果有空闲线程,则会立即执行;如果所有线程都在忙,任务会进入等待队列。
●适用场景:适合任务量已知且不太变化的场景,比如处理常规的后台任务,保证固定的并发量。
●优点:控制并发线程数,避免因线程数量过多导致的系统资源消耗过大。
●缺点:线程数量固定,当任务堆积时,可能导致等待时间较长。
2. CachedThreadPool
●特点:CachedThreadPool 是一个会根据需要自动扩展的线程池。池中的线程数量没有上限,当有新任务到来时,如果没有空闲线程,则会创