打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
简单学习Java自带的线程池

为了实现在并发环境下异步执行任务,我们会使用线程,为了避免频繁创建和销毁线程带来资源消耗,我们会用到线程池。

下面介绍Jdk的4种线程池并配以代码测试:

先定义一个线程类

1)定长线程池:FixedThreadPool

每来一个新的任务,线程池首先判断池里的线程数量有没有达到设定值,如果没有,则会创建一个新的线程,如果已经达到了设置值,线程池会再去判断池中有没有空闲的线程,有则使用,没有的话,新来的任务则会在队列里排队。

测试代码:

运行结果:

2)缓存线程池:CachedThreadPool

每来一个新的任务,线程池首先判断池里有没有空闲的线程,有则重用,没有则创建新的线程。如果一个线程在池里空闲了N秒(默认60S)而没有被重用,将会被线程池移除,释放资源。

源码中这样注释:

为什么非常适用于“短期任务”?

因为short-lived的任务才会很快执行完,线程才会空闲出来,新来的任务才会去重用空闲的线程,否则线程池就会不断地去创建新的线程,或者造成排队等待的任务越来越多,造成服务器压力越来越大。

测试代码:

运行结果:

3)单线程池:SingleThreadExecutor

线程池里只有一个线程,反复使用

测试代码:

运行结果:

4)预期的线程池:ScheduledThreadPool

可以延迟并周期性执行任务的线程池,对于同一个任务在周期性执行时,不一定用的都是同一个线程,线程池每次在执行任务时,只会优先重用空闲的线程。

测试代码:

运行结果:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
基于Tricore架构的RTThread多核实现
精读文章:高级软件工程师成长秘诀
内核引导过程
Tomcat优化之配置线程池
​CPU睿频技术Turbo Boost
计算机操作系统知识点总结(相当到位!!)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服