Java线程池深度揭秘( 四 )


仔细想想业务开发时,诸多的使用场景,何尝不是如此呢?
(二)线程池的 submit 方法与 execute 方法啥区别呢?
execute 方法,适用于不需要关注返回值的场景,只需要将线程丢到线程池中去执行就可以了 。
而 submit() 方法,适用于需要关注返回值的场景,不过最终会调用 execute() 方法 。
考虑到性能提升,如果不需要关注返回值,则建议直接调用 execute() 方法,因为那样会屏蔽很多中间调度 。
(三)线程池状态与线程数量用一个 ctl 变量表示的好处?
线程池状态和线程数量合二为一,用一个原子变量来表示,来减少锁竞争,提高并发效率 。
(四)清晰的注释是否有必要?
通过探秘源码,很多图都是根据源码注释勾勒出来的 。可以看出清晰的注释,对于核心流程而言真的很重要,一定要养成良好的编码习惯,关键业务逻辑、核心流程,建议一定要写好注释,利人又利己,何乐而不为之 。
(五)Executor 家族框架,若写基础框架时,是否有借鉴意义呢?
个人感觉很有借鉴意义,因为无论业务开发还是基础服务,总会看到类似模式框架的身影,总会有大牛模仿着造轮子,所以闲暇之余可以抽象一下 。
寄语写最后本次,主要对 Executor 家族进行了简单介绍,并着重对线程池背后的 ThreadPoolExecutor 类进行深度剖析,知其然知其所以然,希望对大家有帮助 。

【Java线程池深度揭秘】


推荐阅读