Java线程池是静态的_Java中通过Executors调用静态方法来提供四种线程池介绍

本文介绍了Java中通过Executors类创建线程池的四种方式:newCachedThreadPool(可缓存线程池)、newScheduledThreadPool(定长线程池,支持定时和周期任务)、newFixedThreadPool(定长线程池,超出任务在队列中等待)、newSingleThreadExecutor(单线程执行任务,按顺序执行)。此外,还讨论了线程池的生命周期和任务队列的拒绝策略。
摘要由CSDN通过智能技术生成

Java中的线程池用ThreadPoolExecutor类来表示,ThreadPoolExecutor这个类继承自抽象类AbstractExecutorService,AbstractExecutorService又实现了ExecutorService接口,ExecutorService接口又继承了Executor接口。

ThreadPoolExecutor类详细说明在本博客中其他篇幅有介绍,如果需要请参考

0bf0a5fd5cff1420c608077e1db3f939.png

从参数便可以看到几个构造方式的不同,但是若跟源码之后,会发现,前面三个都调用了第四个。

跟源码之后会发现,其实这些静态方法里面也是调用了ThreadPoolExecutor的构造方法,例如:

2d7d45d37d58dd34bc634a560b4b8c1b.png

只不过Executors帮我们配置了一些参数;下面介绍下Executors方式:

1、newCachedThreadPool方法,它创建了一个可缓存的线程池,如果线程池的长度超过处理需要,它可灵活回收空闲线程,若无可回收,则新建线程。

2、newScheduledThreadPool方法,它创建了一个定长线程池,支持定时及周期性的任务执行。

3、newFixedThreadPool 方法,它创建了一个定长线程池,可以控制线程最大并发数,超出的线程会在队列中等待。

4、newSingleThreadExecutor方法,它创建了一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有的任务按照指定的顺序(FIFO, LIFO, 优先级)来执行的。

一、newCachedThreadPool(可以缓存的线程池)

首先,我们一起来创建一个可以缓存的线程池,如果线程池的长度超过了处理需要的话,它可灵活的回收空闲的线程,若无可回收的线程,则就新建线程。代码如图1所示:

936636664f7b8ae1e4635ace0a9f5d92.png

当前线程:pool-1-thread-1输出:0

当前线程:pool-1-thread-1输出:1

当前线程:pool-1-thread-1输出:2

当前线程:pool-1-thread-1输出:3

当前线程:pool-1-thread-1输出:4

当前线程:pool-1-thread-1输出ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值