线程池的各个参数的含义?

我们先从创建开始说起,创建的话主要有以下这几个部分。

第一个,就是我们在创建它的时候,它有构造函数,那构造函数对于线程池而言,参数比较复杂,像之前我们其他的类的构造函数很简单,比如我们定义一个 Map,可能连构造函数里面参数不传都可以。但是在这边的线程池它有非常多的构造函数,并且每一个的含义必须需要我们了解清楚,才能去把它非常良好的给创建出来。

第二个,内容就是我们应该手动创建还是自动创建。其实自动创建是非常方便的,我们也强调自动化,但是对于线程池而言,自动创建有一些弊端,在一定情况下我们手动创建会更好。

第三个,就线程池里面会有一些线程,线程池里面的数量这个数量应该怎么选择?我们假设有 1000 个任务,我们应该用几个线程去执行它是比较合适的呢?

第四个,就是关于停止现成的方法,这和我们的线程停止创建不一样,我们在创建线程和停止线程的时候是上山容易下山难。这边刚好反过来,这边是上山难下山容易。也就是创建实际上要考虑的东西相对比较多,但是停止的话相对会容易一些。

线程池的参数

首先我们就来学习线程池构造函数的参数,在这里我们给出六个参数,这六个参数是我们在创建线程池的时候所需要掌握的。

参数名 类型 含义
corePoolSize int 核心线程数
maxPoolSize int 最大线程数
keepAliveTime long 空闲线程的存活时间
theadFactory ThreadFactory 当线程池需要新的线程的时候,会使用 threadFactory 来生成新的线程
workQueue BlockingQueue 用于存放任务的队列
Handler RejectedExecutionHandler 由于线程池无法接受你所提交的任务的拒绝策略

第一个大家跟随我的鼠标是call,process,它的含义呢是核心线程数。

在这一页ppt。

里面我不能把它完全的介绍清楚,所以我先跟大家把这六个大体是用来做什么的先过一下,然后呢我们再一个一个地、详细地去解释。

第二个呢是max,process,就是最大的线程数。

第三个呢是keep,like,time,保持存活时间。

第四个是我们的work,▁q是我们的任务存储队列,它通常是一个阻塞队列的类型。

第五个是县城工厂,县城工厂是用来创建新县城的,而最后一个呢是拒绝策略的一个处理器。

比如说我们最后没有办法承担更多的任务了,我们需要拒绝就由这个处理器去执行拒绝的内容。

corePoolSize 与 maxPoolSize

我们首先来学习 corePoolSize 和 maxPoolSize 这两个参数具体含义。如果你之前没有接触过线程池的话,你会觉得它的设计实际上是比较巧妙的。

我们先来看一下这两个参数有什么不同,或者说它们分别是什么含义。corePoolSize 指的是核心线程数,线程池在完成初始化之后,里面是没有线程的,也就线程池初始化时线程数默认为 0。当有新的任务提交后,会创建新线程执行任务,如果不做特殊设置,此后线程数通常不会再小于corePoolSize,因为它们是核心线程,即便未来可能没有可执行的任务也不会被销毁。如果这个时候我们假设 corePoolSize 的值设置为 5,于是你突然一下子放过来 5 个任务,那我就创建 5 个线程&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值