Java线程池

[复制链接]
发表于 2025-10-24 05:01:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(一)线程池的上风

  总的来说,池化技能都有以下几个上风
1.低落资源斲丧:镌汰了我们频仍地去创建和烧毁线程
2.进步相应速率:当任务到达时,任务不须要等候线程的创建,直接拿到一个线程就可以相应
3.便于管理:我们通过线程池同一的去管理我们全部线程,举行同一分配,调优和监控监控
(二)线程池参数


我们来看一下每个参数都是什么意思
corePollSize(核心线程数):体现我们线程池最少有多少个线程,默认情况下,这些线程是不停存在的。只有到达了核心线程数再来一个任务我们才放到任务队列
maximumPoolSize(最大线程数):体现我们线程池最多能有几个线程,只有当我们任务队列满了,我们才去突破核心线程数,但是线程数要小于最大线程数
keepAliveTime(最大空闲时间):线程池中的非核心线程最大能空闲多久就要被接纳
unit(最大空闲时间的单元):指定keepAliveTime的时间单元
wordQueue(任务队列):通过线程池execute()方法提交的任务存储在该参数中,接纳壅闭队列实现
threadFactory(线程工厂):一个创建线程的工厂
handler(拒绝战略):  有以下四种
1)AbortPolicy():超出多大线程数,直接抛出非常
2)CallerRunsPolicy():调⽤者负责处理处罚多出来的任务.
3)DiscardOldestPolicy():扬弃队列中最⽼的任务.
4)DiscardPolicy():扬弃新来的任务.
(三)线程池的工作原理

我们用一张图体现

(四)任务队列(workQueue)

任务队列是通过壅闭队列实现的,我们大概分为两种一种是有界队列,一种是无界队列
有界队列:防内存溢出,以是有拒绝战略,也就是我们上面说的拒绝战略
无界队列:任务队列可以不停添加任务,知道内存耗尽,以是此时的最大线程数就没故意义了
那Java给我们提供了7种,我们大概相识一下就可以

(五)线程池的种类

1.定长线程池(FixThreadPool):线程池中线程数量固定,只有核心线程,当全部线程都在忙,任务就会在队列中等候
  实用场景:控制线程最大并发数 
2.定时线程池(ScheduledThreadPool):核心线程数固定,但优劣核心线程数无穷,实验完闲置10ms后举行接纳
实用场景:实验定时大概周期性任务
3.可缓存线程池(CachedThreadPool):没有核心线程,非核心线程数无穷,也就是线程池巨细动态调解,线程空闲60s后被接纳
实用场景:实验大量,耗时少的任务
4.单线程化线程池(SingleThreadExcutor):只有一个核心线程,没有非核心线程,实验完就接纳
实用场景:不适归并发但是大概引起IO壅闭的操纵


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表