Java 常用并发工具简介

1. 前言

大家好,从本小节开始,我们将一起学习 JDK 自带的常用 Java 并发工具。本课程重在介绍 JDK 并发工具的基本应用方法,其中原理介绍相对会少一些,对于底层原理的了解,大家在学习的过程中查阅“Java 并发原理入门教程” 。

JDK 自带的并发工具非常丰富,本系列为大家介绍最常见最实用的并发控制工具。

作为本系列的第一个小节,我将为你简单介绍 JDK 自带的并发工具演变历史,熟练掌握常见并发工具的必要性、学习思路、学习过程应该注意的事项,以及本课程的讲解思路。

下面,我们先了解一下 JDK 常用并发工具是如何一步一步发展而来的。

2. 不断演进的 Java 并发工具集

在 JDK 1.4 及之前的版本中,提供的并发工具很有限,最常用的就是 synchronized 关键字、 volatile 关键字、final 关键字。

在 JDK 1.5 版本中,直接提供了一套相对完整的并发工具包,即 java.util.concurrent 包。

在 JDK 1.7 版本中,进一步丰富并发工具包,比如增加了 Fork / Join 并发编程框架。

在 JDK 1.8 版本中,进一步对部分工具进行扩充,提升并发工具包的性能。以及后继的版本中继续增加各类工具。

本主题以 JDK 1.8 中常用的并发工具作介绍。为什么 JDK 各版本中对并发工具不断优化增强呢?当然是因为并发编程太重要了,我们需要关注并学习好并发编程。

3. 为什么要学习并发工具?

近年来计算机程序向着大规模、分布式、多任务方向发展,尤其是基于 Java 的企业级应用,几乎都采用服务化、集群化的方式实现。

这些都要求充分利用各类系统资源,且要可靠健壮,而要实现这些都离不开并发编程、以及处理并发编程带来的各类问题。并发工具是并发编程的代码结晶,就像一颗颗糖果一样诱人,熟练使用常见的并发工具,会为我们日常研发中涉及并发场景的编程,实现提供非常便捷的且高质量的帮助。

另外在各类技术面试中,也不可避免地会考察并发编程的技能点,熟练使用常见的并发工具,是我们技术人员的基本技术要求。

4. 学习思路是什么?

并发编程本身的学习曲线比较陡峭,尤其是对初学者而言,理解并发编程需要一个过程,在没有完全参透并发编程的原理之前,可以先把目光集中在基本的并发工具应用上面来,先做到会熟练使用,再逐步深入理解其底层的核心原理。

所以对于初学者而言,重点在于理解常见并发工具的种类、应用场景、以及使用方法。对于每一个常见的并发工具,需反复琢磨,要举一反三,多加练习,万不可心急而浮于表面。

在熟练掌握了这些基本知识之后,就可以深入到各类工具的底层实现,进一步了解其背后的原理和编程思想。进而可以做到灵活构建适合各类特殊需求的并发控制工具。

5. 学习基础

在开始学习 Java 并发工具之前,大家需要掌握以下技巧:

  1. 操作系统基本知识,Java 并发编程是基于操作系统基础之上的,了解操作系统基本原理,尤其是操作系统的任务调度管理知识,对理解并发编程工具很有必要。
  2. Java 语言基础语法,后继章节中采用 Java 语言做示例。

6. 本课程如何设计?

在本课程中,我们首先会对 Java 编程中常用的并发工具包,做简单的介绍,让大家有一个整体的概念。之后,从比较容易使用和理解的高层并发工具类入手,逐个介绍,再递进到较底层的并发工具类做介绍,最后着重介绍并发编程中常用的线程框架。

在讲解过程中,会对知识点的基本概念、应用场景做介绍,会穿插一些实践中或正面或反面的使用例子,必要的时候会做一些原理讲解、以及工具之间的对比,帮助大家加深理解,学以致用。