11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

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

  • 2019-03-01
  • 本文字数:1549 字

    阅读完需:约 5 分钟

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

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


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


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


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


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


一、掌握基础概念

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



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


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

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


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


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



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

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


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



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

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


1.“跳出来,看全景”


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


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



2.“钻进去,看本质”


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


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


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


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


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


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


2019-03-01 12:298380

评论

发布
暂无评论
发现更多内容

2021年国产数据库名录和产品信息一览

墨天轮

数据库 大数据 程序员 运维 SQL优化

存币生息钱包APP系统开发|存币生息钱包软件开发

系统开发

一个不兼容的 JS 方法,让你的网站发生崩溃

老魚

JavaScript 网站 程序猿 移动端

全网最全!彻底弄透Java处理GMT/UTC日期时间

YourBatman

GMT UTC JSR310 TimeZone ZoneId

Materialize MySQL引擎:MySQL到Click House的高速公路

华为云开发者联盟

MySQL 数据 Clickhouse 存储 materialize

突破开源Redis的内存限制,存算分离的GaussDB到底有多能“装”?

华为云开发者联盟

redis 存储 华为云 GaussDB 存算分离

架构师week9 作业

Geek_xq

借朋友钱后,对方不还怎么办?

石云升

28天写作 借钱

SpringCloud 从入门到精通14---OpenFeign服务调用

Felix

合约交易软件系统APP开发案例

系统开发

【小菜学网络】交换机与MAC地址学习

fasionchan

网络编程 网络协议 TCP/IP 交换机

盘点12个Python数据可视化库,通吃任何领域

博文视点Broadview

从Gartner 最新“客户之选”报告,看国内外RPA的差异化竞争

王吉伟频道

RPA SaaS 机器人流程自动化 Gartner

苹果的董事长是谁?别去搜了,看这。

Justin

28天写作 冷知识

如何保持积极

Ian哥

28天写作

架构师week9 总结

Geek_xq

Apay矿机系统开发

v16629866266

远程探视正在取代亲自探视

anyRTC开发者

ios android 音视频 WebRTC 直播

云课堂开发实践:白板教程

拍乐云Pano

音视频 在线教育 RTC 互动白板 在线白板

DDD分层架构最佳实践

Barry的异想世界

Spring Boot DDD 架构设计 领域驱动设计DDD

JavaScript对象

hao-kuai

JavaScript 继承 原型 原型链

CWE 4.3:强化你的数据自我保护能力

华为云开发者联盟

网络安全 安全 数据保护 cwe gdpr

突破存储瓶颈,打通高性能计算的“最后一公里“

浪潮云

高性能 存储

春节无法线下社交聚会,来线上“一起X”共享体验

ZEGO即构

创造高效能源管理方案,3D 可视化技术成为进展新思路

一只数据鲸鱼

物联网 数据可视化 3D可视化 绿色能源 智慧能源

Docker 容器健康检查

K8sCat

Docker Dockerfile HEALTHCHECK

Soul 源码阅读 01|数据同步

哼干嘛

Java Soul网关

Python实用代码-无限级分类树状结构生成算法

穿甲兵

Python 算法

六步带你完成博流wifi模组对接华为云流程

华为云开发者联盟

网络 华为云 sdk 博流 wifi模组

JavaScript函数

hao-kuai

JavaScript 闭包 Function 箭头函数

响应号召,开始14天的居家隔离 | 视频号 28 天 (14)

赵新龙

28天写作

简明高效的 Java 并发编程学习指南_编程语言_王宝令_InfoQ精选文章