26

简明高效的 Java 并发编程学习指南

 5 years ago
source link: https://www.infoq.cn/article/1ggzj_oFl8wuJFwVG9et?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

你好,我是宝令, 《Java 并发编程实战》 专栏作者,很高兴你能看到这篇内容。

对于一个 Java 程序员而言, 能否熟练掌握并发编程是判断他优秀与否的重要标准之一 。因为并发编程是 Java 语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个程序员的内功。

尤其是大数据时代的来临,高并发更成为了家常便饭,工作中,你总是绕不开并发编程的任务,比如说,你想写个程序,一边从文件中读取数据,一边还要做实时计算…所以,想成为一名资深的 Java 后端工程师,并发编程必须要牢牢把握。

在这里,我就对 Java 并发编程的学习路径做一个梳理,方便大家查漏补缺。同时,这些内容我在《Java 并发编程实战》专栏里面也做了系统的讲解。

下面我们来看看具体的学习知识点。

一、掌握基础概念

学习 Java 并发编程,第一步就是要打下坚实的基础,把涉及的相关基础概念都搞清楚。比如,深度认识 Java 内存模型、死锁产生的原因和解决方案、线程间的协作机制,等等。

mQvU3qm.png!web

可见性、原子性和有序性问题: 并发编程 Bug 的源头

二、拿下常见的并发工具类

Java 经过这些年的发展,Java SDK 并发包提供了非常丰富的功能,对于初学者来说可谓是眼花缭乱,好多人觉得无从下手。但是,Java SDK 并发包乃是并发大师 Doug Lea 出品,堪称经典,它内部一定是有章可循的。

所以,只有你把并发编程核心的问题搞清楚,回过头来看 Java SDK 并发包,你才会有种豁然开朗的感觉: 它不过是针对并发问题开发出来的工具而已 。而此时的 SDK 并发包就可以任你“盘”了。

在专栏中,我会手把手带你找到其中的章法及核心问题。

AfI3auz.png!web

三、对并发设计模式了如指掌

设计模式是成功经验的总结和提炼,在编程领域,最知名的就是面向对象设计模式。同样在并发编程领域,也有人总结和提炼出了一系列的设计模式。学习设计模式是快速提升你设计功底的捷径。

来看看最常见的 9 种并发设计模式有哪些:

QFfiQ3U.png!web

四、产出自己的 Java 并发编程全景图

并发编程并不是一门相对独立的学科,而是一个综合学科,导致大家学习很有难度,容易注重细节而忘了全局。这里我有两个建议:一个是“跳出来,看全景”;另一个是“钻进去,看本质”。

1.“跳出来,看全景”

你应该也知道,学习最忌讳的就是“盲人摸象”,只看到局部,而没有看到全局。所以,你需要从一个个单一的知识和技术中“跳出来”,高屋建瓴地看并发编程。当然,这 首要之事就是你建立起一张全景图。

结合我多年的工作经验来看,并发编程领域可以抽象成 三个核心问题:分工、同步和互斥 。以下是我根据这三个核心问题制作的「并发编程全景图」,可以让你的知识成体系,所学知识也融汇贯通起来,由点成线,由线及面。

YNveUb6.png!web

2.“钻进去,看本质”

但是光跳出来还不够,还需要下一步, 就是在某个问题上钻进去,深入理解,找到本质。

所以在学习并发编程的过程中,我都会探索它背后的理论是什么。比如,当看到 Java SDK 里面的条件变量 Condition 的时候,我会下意识地问,“它是从哪儿来的?是 Java 的特有概念,还是一个通用的编程概念?”当我知道他来自管程的时候,我又会问,“管程被提出的背景和解决的问题是什么?”这样一路探索下来,我发现 Java 语言里的并发技术基本都是有理论基础的,并且这些理论在其他编程语言里也有类似的实现。

所以,技术的本质是背后的理论模型。

学习攻略 | 如何才能学好并发编程?

上述很多知识点都会在我的专栏《Java 并发编程实战》中涉及到,我会站在 理论、模型的角度 讲解 Java 并发,让你融汇贯通,形成 全面系统的并发编程知识体系 。最终可以 得心应手地解决各种并发难题,同时将这些知识用于其他编程语言。一分辛劳,三分收获。

想成为“资深”Java 工程师的朋友,首先要攻破的就是并发编程。我在极客时间刚上线了 《Java 并发编程实战》 ,带你全面系统提升你的并发编程能力,上新优惠 68,强烈建议入手。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK