Java 并发 深入 7-线程池的使用
2022/1/28 20:04:14
本文主要是介绍Java 并发 深入 7-线程池的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
0. 我是真的不知道为什么不打算开车还得考驾照
本章将介绍对线程池进行配置与调优的一些高级选项,并分析在使用任务执行框架时需要注意的各种危险,以及Executor的一些高级的使用方法。
1. 在任务与执行策略之间的隐性耦合
有些类型的任务需要明确地指定执行策略:
依赖性任务: 当在线程池中执行独立的任务时,可以随意地改变线程池的大小和配置,这些修改只会对执行性能产生影响。 然而,如果提交给线程池的任务需要依赖其他的任务,那么隐含地给执行策略带来了约束,必须小心地维持这些执行策略以避免产生活跃性问题。 使用线程封闭机制的任务 这种情形将任务与执行策略之间形成隐含的耦合——任务要求其执行所在的Executor是单线程的(准确的说,只要一个任务对内存的作用对于下一个任务一定是可见的,这正是newSingleThreadExecutor的做法)。 如果将Executor从单线程环境改为线程池环境,那么将失去线程安全性。 对响应时间敏感的任务 例如:GUI 将多个运行时间较长的任务提交给一个只包含少量线程的线程池,这将降低Eecutor管理的服务的响应性 使用ThreadLocal的任务 只有当线程本地值的生命周期受限于任务的生命周期时,在线程池的线程中使用ThreadLoadl才有意义 而在线程池的线程中不应该使用ThreadLocal在任务之间传递值
这篇关于Java 并发 深入 7-线程池的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04百万架构师第六课:设计模式:策略模式及模板模式
- 2025-01-04百万架构师第七课:设计模式:装饰器模式及观察者模式
- 2025-01-04适用于企业管理的协作工具API推荐
- 2025-01-04挑战16:被限流的CPU
- 2025-01-03企业在选择工具时,如何评估其背后的技术团队
- 2025-01-03Angular中打造动态多彩标签组件的方法
- 2025-01-03Flask过时了吗?FastAPI才是未来?
- 2025-01-0311个每位开发者都应知道的免费实用网站
- 2025-01-03从REST到GraphQL:为什么以及我是如何完成转型的
- 2025-01-03掌握RAG:从单次问答到连续对话