Java 并发 深入 7-线程池的使用

0. 我是真的不知道为什么不打算开车还得考驾照

本章将介绍对线程池进行配置与调优的一些高级选项,并分析在使用任务执行框架时需要注意的各种危险,以及Executor的一些高级的使用方法。

1. 在任务与执行策略之间的隐性耦合

有些类型的任务需要明确地指定执行策略:

依赖性任务:
	当在线程池中执行独立的任务时,可以随意地改变线程池的大小和配置,这些修改只会对执行性能产生影响。
	然而,如果提交给线程池的任务需要依赖其他的任务,那么隐含地给执行策略带来了约束,必须小心地维持这些执行策略以避免产生活跃性问题。

使用线程封闭机制的任务
	这种情形将任务与执行策略之间形成隐含的耦合——任务要求其执行所在的Executor是单线程的(准确的说,只要一个任务对内存的作用对于下一个任务一定是可见的,这正是newSingleThreadExecutor的做法)。
	如果将Executor从单线程环境改为线程池环境,那么将失去线程安全性。

对响应时间敏感的任务
	例如:GUI
	将多个运行时间较长的任务提交给一个只包含少量线程的线程池,这将降低Eecutor管理的服务的响应性

使用ThreadLocal的任务
	只有当线程本地值的生命周期受限于任务的生命周期时,在线程池的线程中使用ThreadLoadl才有意义
	而在线程池的线程中不应该使用ThreadLocal在任务之间传递值
上一篇:Spyder启动报错 An error ocurred while starting the kernel


下一篇:SpringBoot 性能优化