大约 84 分钟
- JAVA58
- 面试50
- SPRINGBOOT29
- SPRING25
- K8S23
- DESIGN PATTERN14
- 设计模式14
- REACT10
- 前端10
- SPARK10
- 大数据8
- DOCKER7
- 分布式7
- DDD6
- 架构设计6
- MYBATIS5
- KAFKA4
- SPRINGMVC4
- MYSQL4
- LINUX3
- FLINK3
- ORM3
- REDIS3
- MAVEN2
- MVC2
- 云原生2
- project2
- ALGORITHM2
- PROBLEM2
- JVM2
- Spring1
- SpringFrameWork1
- ABOUT1
- 算法1
- HBASE1
- DRUID1
- 缓存1
大约 16 分钟
什么是线程池
线程池(Thread Pool)是⼀种基于池化思想管理线程的⼯具,经常出现在多线程服务器中,如MySQL。
线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执⾏的任务。这种做法,⼀⽅⾯避免了处理任务时创建销毁线程开销的代价,另⼀⽅⾯避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利⽤。
⽽本⽂描述线程池是JDK中提供的ThreadPoolExecutor类。
当然,使⽤线程池可以带来⼀系列好处:
- 降低资源消耗:通过池化技术重复利⽤已创建的线程,降低线程创建和销毁造成的损耗。
- 提⾼响应速度:任务到达时,⽆需等待线程创建即可⽴即执⾏。
- 提⾼线程的可管理性:线程是稀缺资源,如果⽆限制创建,不仅会消耗系统资源,还会因为线程的不合理分布导致资源调度失衡,降低系统的稳定性。使⽤线程池可以进⾏统⼀的分配、调优和监控。
- 提供更多更强⼤的功能:线程池具备可拓展性,允许开发⼈员向其中增加更多的功能。⽐如延时定时线程池
ScheduledThreadPoolExecutor,就允许任务延期执⾏或定期执⾏。
大约 26 分钟