线程池的几种方式

newFixedThreadPool(int nThreads)
创建一个固定长度的线程池,每当提交一个任务就创建一个线程,直到达
到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而
结束时,线程池会补充一个新的线程

newCachedThreadPool()

创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收
空闲线程,而当需求增加时,则可以自动添加新线程,线程池的规模不存在任何
限制
 

newSingleThreadExecutor()

这是一个单线程的 Executor,它创建单个工作线程来执行任务,如果这个线
程异常结束,会创建一个新的来替代它;它的特点是能确保依照任务在队列中的
顺序来串行执行
 

newScheduledThreadPool(int corePoolSize)
创建了一个固定长度的线程池,而且以延迟或定时的方式来执行任务,类似
于 Timer。
 

线程池创建方式总共有7种 [^2]: 1. `Executors.newFixedThreadPool`:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待 [^2]。 2. `Executors.newCachedThreadPool`:创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新建线程 [^2]。 3. `Executors.newSingleThreadExecutor`:创建单个线程数的线程池,它可以保证先进先出的执行顺序 [^2]。 4. `Executors.newScheduledThreadPool`:创建一个可以执行延迟任务的线程池 [^2]。 5. `Executors.newSingleThreadScheduledExecutor`:创建一个单线程的可以执行延迟任务的线程池 [^2]。 6. `Executors.newWorkStealingPool`:创建一个抢占式执行的线程池(任务执行顺序不确定)【JDK 1.8 添加】 [^2]。 7. `ThreadPoolExecutor`:手动创建线程池方式,它创建时最多可以设置7个参数 [^2]。 创建示例如下: ```java import java.util.concurrent.*; public class ThreadPoolCreationExample { public static void main(String[] args) { // 1. newFixedThreadPool ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5); // 2. newCachedThreadPool ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); // 3. newSingleThreadExecutor ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); // 4. newScheduledThreadPool ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3); // 5. newSingleThreadScheduledExecutor ScheduledExecutorService singleThreadScheduledExecutor = Executors.newSingleThreadScheduledExecutor(); // 6. newWorkStealingPool ExecutorService workStealingPool = Executors.newWorkStealingPool(); // 7. ThreadPoolExecutor ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( 2, // corePoolSize 5, // maximumPoolSize 60L, // keepAliveTime TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy() ); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值