说一说java线程池

1|0请叙述一下您对线程池的理解?

回答这个面试题要从线程池的好处线程池如何使用线程池启动时执行的策略来说

线程池的好处:

  1. 降低资源消耗:重复利用线程池中的线程节省线程创建和销毁带来的消耗;
  2. 提高性能:当任务需求时,可以不用创建线程直接执行,主要是直接从线程池中取出线程去执行;
  3. 提高线程的可管理性:线程是稀缺资源,而且也是任务中不可少的资源,如果频繁的且无限制的创建会消耗系统资源,降低系统稳定性导致系统崩溃,内存溢出等等问题

如何使用线程池:

上述中线程池创建方式创建线程之后,通过execute()方法启动线程池

线程池启动时执行的策略:
刚开始创建线程池的时候是没有池容器中是没有线程的。

执行execute()方法前提是线程池中要有线程,不然编译不通过,

在线程池执行execute()方法后,

先解释corePoolSize:线程池的核心大小

maximumPoolSize:线程池最大线程数(每个线程池都不一样)

1.首先会判断当前的线程池的corePoolSize大小,是否存满了这个大小的线程数,如果够了就放入等待队列中,

2.如果等待队列也满了并且当前正在运行的线程数量小于 maximumPoolSize,那么依然会执行这个线程,

3.如果大于了maximumPoolSize,则会抛出异常。

继续说上边的,如果没有存满,则会直接执行线程。

4.当一个线程执行完,会马上从任务队列取出一个任务去执行。

5.如果一个线程很长时间没有执行任务,这个 很长时间就是keepAliveTime,超出了这个时间且当前运行的线程大于corePoolSize,这个线程就会被销毁,所以说,所有任务执行完之后,等待一会,线程池就会变回corePoolSize的大小。

更详细参考:
https://blog.csdn.net/qq_29373285/article/details/85238728
https://blog.csdn.net/fuyuwei2015/article/details/72758179
https://www.cnblogs.com/dolphin0520/p/3932921.html


__EOF__

本文作者程序员小宇
本文链接https://www.cnblogs.com/treasury/p/12991821.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   程序员小宇  阅读(156)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示