那些年向前冲|Java线程池深度揭秘( 五 )
场景二:
AbstractExecutorService 并没有实现 execute 方法 , 而是为子类 ThreadPoolExecutor 留了个口子 , 让子类去灵活扩展(钩子函数) 。
仔细想想业务开发时 , 诸多的使用场景 , 何尝不是如此呢?
(二)线程池的 submit 方法与 execute 方法啥区别呢?
execute 方法 , 适用于不需要关注返回值的场景 , 只需要将线程丢到线程池中去执行就可以了 。
而 submit() 方法 , 适用于需要关注返回值的场景 , 不过最终会调用 execute() 方法 。
考虑到性能提升 , 如果不需要关注返回值 , 则建议直接调用 execute() 方法 , 因为那样会屏蔽很多中间调度 。
(三)线程池状态与线程数量用一个 ctl 变量表示的好处?
线程池状态和线程数量合二为一 , 用一个原子变量来表示 , 来减少锁竞争 , 提高并发效率 。
(四)清晰的注释是否有必要?
通过探秘源码 , 很多图都是根据源码注释勾勒出来的 。 可以看出清晰的注释 , 对于核心流程而言真的很重要 , 一定要养成良好的编码习惯 , 关键业务逻辑、核心流程 , 建议一定要写好注释 , 利人又利己 , 何乐而不为之 。
(五)Executor 家族框架 , 若写基础框架时 , 是否有借鉴意义呢?
个人感觉很有借鉴意义 , 因为无论业务开发还是基础服务 , 总会看到类似模式框架的身影 , 总会有大牛模仿着造轮子 , 所以闲暇之余可以抽象一下 。
寄语写最后本次 , 主要对 Executor 家族进行了简单介绍 , 并着重对线程池背后的 ThreadPoolExecutor 类进行深度剖析 , 知其然知其所以然 , 希望对大家有帮助 。
好了 , 本次就谈到这里 , 一起聊技术、谈业务、喷架构 , 少走弯路 , 不踩大坑 。 欢迎关注「一猿小讲」 , 会持续输出原创精彩分享 , 敬请期待!
推荐阅读:
Java程序跑的快 , 全要靠线程带
fastjson的这些坑 , 你误入了没?
【那些年向前冲|Java线程池深度揭秘】Java 8 的这些特性 , 你知道吗?
推荐阅读
- 小机灵鬼|干货速来!透彻剖析微服务架构设计模式,深入开发Java有奇效
- 罗云熙|盘点那些古装帅,现代装却很“丑”的3位男神,罗云熙任嘉伦上榜
- 大众报业·海报新闻|盘点那些低价转让的公司,长城宽带100万元打包转让
- Java|计算机专业的本科生,该选择学习Java技术体系还是.NET技术体系
- 【】长城宽带100万元打包转让 盘点那些低价转让的公司
- 时尚广州|T恤的标语你了解过吗?揭秘衣服上那些奇怪的字句
- 刘药师话用药|有一种健康和美丽,从脚下开始,足部护理那些事儿
- 穿搭日记|那些一眼就让人爱上的明星耳环,便宜的才几百,陈小纭金晨都在戴
- 穿搭|那些乘风破浪的姐姐们,为什么每次都能把职业装穿得美出圈?
- 穿搭■为什么气质上总是输一大截?来看看那些教科书式的穿搭吧,学起来
