> 游戏
怎么开启多线程模式(怎样开启多线程)
导语:怎么开启多线程
在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、队列还有无界的、不缓存的队列
本文内容由小璎整理编辑!