Java线程池

       概述:         线程池,从字面含义来看是管理同一组同构工作线程的资源池。线程池与工作队列是密切相关的, 工作队列保存了所有等待执行的任务, 工作线程从工作队列中获取任务并执行。         通过重用线程而不是创建线程的方式, 这样做的好处是: ①. 可以避免因创建线程和销毁线程所产生的开销;②.当有任务需要执行时不会因为需要创建线程而延迟任务的执行, 从而提高响应性。③. 通过调节线程池大小, 可以使处理器尽量保持忙碌状态, 不仅可以防止创建过多的线程而导致竞争资源过于激烈从而使应用程序耗尽内存。 创建方式:    可以通过Executors来获取需要的线程池:     ①. newFixedThreadPool。它会创建一个固定长度的线程池, 每提交一个任务就会创建一个线程,直到达到最大线程数为止。这时候线程池的规模就不会变化,需要注意的是当某个线程因发生了未预期的Exception而终止,这时候线程池会补充一个新的线程。     ②. newCachedThreadPool。它将创建一个可缓存的线程池,当线程池的规模大于当前需要处理的任务时会进行回收空闲的线程, 当任务增加时会动态增加线程数,  线程池的规模不受限制。     ③. newSingleThreadExecutor。它将创建单个工作的线程执行任务,  如果线程因Exception而终止会创建一个新的线程补充。它能够确保任务在队列中的顺序串行执行。    ④. newScheduledThreadPool。它将创建一个固定长度的线程池, 并且可以通过定时或延迟的方式执行工作任务。 生命周期:     生命周期包含三个阶段: 运行、关闭、停止。在初始创建时处于运行状态, shutdown方法可以平缓的关闭线程池,过程:不再接受新的任务、等待已经提交的任务执行完毕(包含未开始执行的任务)。shutdownNow是一个比较暴力的方式,过程: 尝试关闭正在执行的任务、拒绝队列中尚未开始执行的任务。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java 多线程暂停与恢复:suspend,resume

    这边做了一个小测试: 实现了runnable接口,在方法中打印count的值: int count =0; @Override public void ...

    用户1215919
  • 设计模式之装饰模式

    其中一个配料类代码: public class Fruit extends AbstractDrinkDecorator { public Fruit(Dri...

    用户1215919
  • ActiveMQ几个重要的配置文件

    version:5.10,在5.8以后增加了levelDB的方式进行集群配置 ①.wrapper.conf: # -----------------------...

    用户1215919
  • Android多线程:你必须要了解的多线程基础知识汇总

    版权声明:本文为博主原创文章,未经博主允许不得转载,更多请继续关注Carson_Ho htt...

    Carson.Ho
  • 线程池

    不光是线程池,池化思想在诸多地方有着很好的应用,比如对象池、连接池等等。。一般运用池化思想的都是一些比较消耗系统资源的操作,通过池化,可以降低内存消耗,并且可以...

    AlbertZhang
  • 线程池ThreadPoolExecuter使用详解

    使用过jdk自带线程池或者看过源码的都知道,jdk1.5版本引入了并发包,线程池就是其中一个比较重要的内容,所谓线程池和连接池以及其他池子一样,其核心概...

    Typhoon
  • 面试官:Java线程池了解?如果你还回答不好,那还不赶快收藏!

    本文将根据面试中常被问到的 Java线程池 展开抽丝剥茧的解析,这个问题可以说是百分之百会在Java程序员面试中被问到,因为在工作中这个需求实在是太普遍了。Ja...

    捡田螺的小男孩
  • 操作系统概念学习笔记 9 线程

    线程是CPU使用的基本单元,它由线程ID、程序计数器、寄存器集合和栈组成。它与属于统一进程的其他线程共享代码段、数据段和其他操作系统资源。

    种花家的奋斗兔
  • 面试官:怎样去运用线程池?工作中如何使用?

    工作中,我们有时候需要实现一些耗时的任务。比如:将 Word 转换成 PDF 存储的需求。

    业余草
  • 【Java线程】“打工人”初识线程池及自定义线程池实战

    聊一下为什么要使用线程池? 程序的运行本质,就是通过使用系统资源(CPU、内存、网络、磁盘等等)来完成信息的处理,比如在JVM中创建一个对象实例需要消耗CPU...

    沁溪源

扫码关注云+社区

领取腾讯云代金券