高手问答第 217 期 —— 如何进阶 Java 并发编程?

局长 发布于 11/13 19:13
阅读 11K+
收藏 24

OSCHINA 本期高手问答(2018 年 11 月 14 日 — 11 月 20 日)我们请来了@技术原始积累 翟陆续(加多)为大家解答关于 Java 并发编程方面的问题。

翟陆续(加多),资深 Java 开发工程师,著有《Java并发编程之美》一书,目前任淘宝技术高级开发工程师,热衷于 Java 并发编程,对 JUC 包源码有深入的研究,熟悉常用开源框架实现原理。

并发编程相比 Java 中其他知识点的学习门槛较高,从而导致很多人望而却步。但无论是职场面试,还是高并发/高流量系统的实现,却都离不开并发编程,于是能够真正掌握并发编程的人成为了市场迫切需求的人才。

本期问答内容:

  1. 为何要阅读源码,如何高效阅读源码
  2. 如何学习 JUC 包
  3. 如何形成 Java 并发编程知识体系
  4. 并发编程进阶指南

或者其它关于 Java 并发编程的问题,也欢迎大家积极提问!

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《Java并发编程之美》一书。

购买链接:京东

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就深度学习问题向@技术原始积累 翟陆续(加多)提问,请直接回帖提问。

加载中
2
大轮明王
大轮明王

@技术原始积累  Reactor 能解决什么场景下的高并发问题?

技术原始积累
提高程序系统性能有两种方式: 1.使用更多的线程和硬件资源进行并行处理 2.最大化利用有限的线程和硬件资源。 Reactor致力于第二点的实现。
0
天山的影子
天山的影子

@技术原始积累 大佬您好,我是个菜鸟。我看了下目录,发现您介绍了tomcat,请问您的书里讲解了jdbc连接池的相关内容吗,谢谢!

技术原始积累
你好,书中是讲解tomcat中并发组件的使用,不会涉及jdbc方法的讲解
0
下一秒瞬间

@技术原始积累 您好,能列举一些并发编程的实际应用场景吗?怎样才能写出最适合的并发编程。希望能获得您的一本著作。

技术原始积累
并发编程的场景很多很多,比如秒杀系统,比如系统的异步解耦实现(一般通过通过生产消费者消息队列实现),比如netty的Reactor线程模型等等。怎样才能写出最适合的并发编程:这个没有通用的法则,需要根据具体业务场景做取舍
0
归园田居
归园田居

@技术原始积累 大佬你好,并发编程听说很久了,但一直不清楚他的应用场景,尤其是在中小企业中。请大佬指点一二。

技术原始积累
并发编程的场景很多很多,比如秒杀系统,比如系统的异步解耦实现(一般通过通过生产消费者消息队列实现),比如netty的Reactor线程模型等等。最简单的,如何在多线程先实现一个计数器,这个就需要并发问题的考虑。
0
Li_Peng
Li_Peng

@技术原始积累 你好,请问阅读学习java源代码方面有什么好的建议吗,比如从哪些模块开始了解,阅读学习中遇到不明白的问题,从哪些渠道获取答案比较权威准确呢?谢谢!

Li_Peng
Li_Peng
回复 @技术原始积累 : 回答的好认真,好细致,感谢!
技术原始积累
回复 @技术原始积累 : 遇到问题,建议Google搜索答案,另外可以去Stack Overflow看看有没有类似问题答案
技术原始积累
回复 @技术原始积累 : 另外开源框架里面每个功能类或者方法一般都有注释,这些注释是一手的好资料,比如 JUC 包里的一些并发组件的注释,就已经提供了它们的设计原理和使用场景。 还有查框架使用说明最好去官网查,比如去看他的reference文档或者github,一般github上有他的使用例子或者测试用例,这个也是学习的一手资料。
技术原始积累
在你看某一个框架的源码前,先去 Google 查找这个开源框架的官方介绍,通过资料看看该框架有几个模块,各个模块是做什么的,之间是什么联系,每个模块都有哪些核心类,在阅读源码时可以着重看这些类。 debug时候你最好把主要类的调用时序图、以及类图结构画出来,等画好后,在对着时序图分析调用流程,就可以清楚的知道类之间的调用关系,通过类图就可以知道类的功能、以及相互之间的依赖关系了。
0
雪舞潇湘
雪舞潇湘

@技术原始积累 大佬好。我在小型初创企业,现在简单使用了分布式框架,但可预见的会在上线后产生较大的并发量,请问在这种情景下。是否提前筹备并发的解决方案比较好?

雪舞潇湘
雪舞潇湘
回复 @技术原始积累 : 多谢指导,看来目前公司的技术方向有些冒进了。在没有完全验证商业模式成型的时候,就开始花过多的精力铺垫。
技术原始积累
初创企业一开始追求的是业务快速上线,以便验证商业模式的正确性,如果你们已经验证了商业模式没问题,并且有时间精力来做,那么可以提前筹备。
0
MoonTree
MoonTree

@技术原始积累 大神好,作为应届毕业生,我们都知道并发的技能很重要,但在校期间的项目很难有相关的实践经验。此种情况下如何提升自己的技能,您有何建议呢?

技术原始积累
对于在校大学生来说,首先要把Java打好,首先多看书,多思考,多多动手做些小东西,然后在基础打打差不多的时候,出去实习,去实践。校招最看重的是一个人的潜力和对现有知识掌握程度,因为一般在校生大多没生产实践经验,所以校招一般对项目经验要求不是那么严格
0
海参拉面
海参拉面

@技术原始积累  大神好  我就是很想知道 怎么阅读源码 都说读源码很好 但是对于我来说  无从下手

技术原始积累
参上上面回答,另外:https://zhuanlan.zhihu.com/p/49797107
0
Spring狂人
Spring狂人

@技术原始积累

对于分布式的并发场景,如何协调各个节点有序的进行任务执行

技术原始积累
在分布式系统中 网关层一般会对请求做负载均衡,比如轮询或者一致性hash等,把请求分派到后端具体的应用集群,处理请求集群中每个机器处理所有请求的一个子集,一般每个机器本身是无状态的所以不需要处理多个机器上应用的同步,但是如果多个机器上的请求需要同时使用一个资源,这时候需要使用分布式锁或分布式事务进行协调。
0
刘品
刘品

@技术原始积累  java的并发能力在numa架构下表现如何?有调优方案吗?

技术原始积累
这个没实践过,不好回答
返回顶部
顶部