Java中的线程池实现原理

Java中的线程池实现原理

上文从自定义一个线程池Java线程池,简单说了线程的实现原理,本文就从Java实现的线程池说说线程池的原理。

线程池的实现原理

首先创建一个线程池,当添加一个新的任务的时候,线程池的处理流程。

、判断核心线程池是否已满,如果没满,则创建线程并执行,如果已满进行判断

、判断现在的队列是否已满,如果没满,添加到队列中,如果已满进行判断

、判断线程池是否已满,如果没满,则创建线程边执行任务,如果已满进行判断

、根据创建线程池时候的策略来处理,比如直接返回错误或直接丢弃等。

线程池的处理流程图

ThreadPoolExecutor是实现了Executor和ExecutorService接口,看下核心方法execute(),从代码和注释中可以看到上面说的流程是一致的。

方法execute()

使用线程池的好处

、减少创建和销毁线程的消耗,让线程池可以重复利用

、能够把线程集中管理,避免过度创建线程占满系统资源,还能集中管理,监控资源等。

使用线程池的方式必须正确,如果使用不当也会有引发问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200308A0A4MK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券