栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java线程池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java线程池

1.线程池的作用:
  • 降低资源消耗,提高利用率,降低创建和销毁线程的消耗。
  • 提高响应速度,线程可直接执行,而不是先创建线程,再执行。
  • 提高线程的客观理性,线程是稀缺资源,使用线程池可以统一分配调优监控。
2.线程池参数         corePoolSize 代表核心线程数,也就是正常情况下创建工作的线程数,这些线程创建后并不会消除,而是一种常驻线程。         maxinumPoolSize 代表的是最大线程数,它与核心线程数相对应,表示最大允许被创建的线程数,比如当前任务较多,将核心线程数都用完了,还无法满足需求时,此时就会创建新的线程,但是线程池内线程总数不会超过最大线程数。         keepAliveTime 、 unit 表示超出核心线程数之外的线程的空闲存活时间,也就是核心线程不会消除,但是超出核心线程数的部分线程如果空闲一定的时间则会被消除, 我们可以通过setKeepAliveTime 来设置空闲时间。         workQueue队列用来存放待执行的任务,假设我们现在核心线程都已被使用,还有任务进来则全部放入队列,直到整个队列被放满但任务还再持续进入则会开始创建新的线程,直至到最大线程数maxinumPoolSize 后执行Handler 任务拒绝策略。         ThreadFactory 实际上是一个线程工厂,用来生产线程执行任务。我们可以选择使用默认的创建工厂,产生的线程都在同一个组内,拥有相同的优先级,且都不是守护线程。当然我们也可以选择自定义线程工厂,一般我们会根据业务来制定不同的线程工厂。         Handler 任务拒绝策略,有两种情况,第一种是当我们调用 shutdown 等方法关闭线程池后,这时候即使线程池内部还有没执行完的任务正在执行,但是由于线程池已经关闭,我们再继续想线程池提交任务就会遭到拒绝。另一种情况就是当达到最大线程数,线程池已经没有能力继续处理新提交的任务时,这时也要拒绝。 3.线程池处理流程:                  4.为什么是先将任务添加列队而不是先创建最大线程处理任务?

        因为每次在创建新线程的时候,都是要获取全局锁的,这个时候其它的任务就得阻塞,影响了整体效率。

5.线程池中阻塞队列的作用?         1.阻塞线程,即在任务队列没有任务时,阻塞核心线程,使线程进入wait状态,释放CPU资源。         2.唤醒线程, 阻塞队列自带阻塞和唤醒的功能,不需要额外处理,无任务执行时 , 线程池利用阻塞队列的 take 方法挂 起,从而维持核心线程的存活、不至于一直占用 cpu 资源。         3.保存任务,一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续进入队列的任务。 6.线程池中线程复用原理:         线程池将线程和任务进行解耦,线程是线程,任务是任务,摆脱了之前通过 Thread 创建线程时的一个线程必须对应一个任务的限制。         在写多线程的时候,往往新建一个任务类来继承Thread或者实现Runnable接口,将任务逻辑写在run方法里,通过调用Thread.start()方法来执行run方法,才能做到多线程异步运行;直接调run方法是同步运行的。         而在线程池中,同一个线程可以从阻塞队列中不断获取新任务来执行,其核心原理在于线程池对Thread 进行了封装,并不是每次执行任务都会调用 Thread.start() 来创建新线程,而是让每个线程去执行一个“ 循环任务 ” ,在这个 “ 循环任务 ” 中不停检查是否有任务需要被执行,如果有则直接执行任务中的 run 方法,将 run 方法当成一个普通的方法执行,通过这种方式只使用固定的线程就将所有任务的 run 方法串联起来,可以直接做到多线程异步运行。 详细看视频: 膜拜!华为大牛透彻讲解Java面试100道必考题,不管你工作几年,都得看看!现在免费分享给大家!_哔哩哔哩_bilibili
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号