-
(1) Executor框架的好处是将__任务的提交__和__任务的执行策略__进行解耦
(2) 但是有些情况不适合用Executor框架
1° 依赖性任务
一个线程中的任务依赖另一个线程中的任务或资源
2° 使用线程封闭机制的任务
使用newSingleThreadExecutor可以把这种任务执行的很好,但是后续的开发人员一旦不知道这件事就完蛋了
3° 对响应时间敏感的任务
如果任务的执行时间过长或者线程池的数量过小,很容易出现响应性不敏感的问题
4° 使用ThreadLocal的任务
没懂
-
线程饥饿死锁
情况:A任务进入线程池中执行,但是它__依赖__B任务的资源或结果;但由于线程池太小,导致B任务一直在等待无法进入线程池
-
运行时间较长的任务
情况:任务的阻塞时间过长或者计算时间过长,导致线程池的响应性变得很糟糕
解决办法:设置超时,如果任务一段时间内还没有完成就取消它(例如用Future.get()和Future.cancel()配合)
chapter08_线程池的使用_1_在任务与执行策略之间的隐性耦合
最新推荐文章于 2024-02-23 17:50:47 发布