您的位置 首页 java

怎么开启多线程

java 中,创建 线程池 有好几种方式,比如 jdk 默认给我们提供了4种创建线程池的方法

但是这4线程池有缺点:

FixedThreadPool(指定工作线程数量的 线程 池)和SingleThreadPool(一个单线程化):允许的请求队列长度为Integer.MAX_VALUE(2的31次方-1),可能会堆积大量的请求,从而导致OOM。

CachedThreadPool(可缓存)和ScheduledThreadPool(定长的线程池):允许的创建线程数量为Integer.MAX_VALUE(2的31次方-1),可能会创建大量的线程,从而导致OOM。

我在项目中,是通过 ThreadPoolExecutor 指定7个核心参数创建的线程池。

7个参数分别为:

核心线程数,

最大线程数

时间单位

时间长度,

队列,

创建线程的工厂,

拒绝策略

例如我在XX模块中,我使用到了异步编排技术,在这里使用到了线程池,我指定的参数分别为50,100,60,秒,有界队列50,决绝策略是直接拒绝新的任务,我的这个线程池的运行流程是:

1、新建线程池,初始化50个线程

2、有任务需要执行,核心线程数先去支持

3、核心线程数被占满之后,去队列排队

4、队列也排满,查看是否达到了最大线程数,如果没有,则新建线程去执行队列里的第一个任务,

5、如果线程数达到最大线程数,则执行拒绝策略,我的拒绝策略是直接拒绝

6、当然拒绝策略还有拒绝抛出异常、只要线程池关闭,则一直等待、丢弃最早

7、队列还有无界的、不缓存的队列

文章来源:智云一二三科技

文章标题:怎么开启多线程

文章地址:https://www.zhihuclub.com/189044.shtml

关于作者: 智云科技

热门文章

网站地图