并發(fā)編程簡介
1. 前言
大家好,本節(jié)我們來一起學(xué)習(xí) Java 并發(fā)編程的核心原理。
作為本專題的第一個小節(jié),我們先來了解下什么是并發(fā)編程,以及學(xué)習(xí)并發(fā)編程的必要性,及學(xué)習(xí)過程應(yīng)該注意的事項(xiàng)。
下面,我們先了解一下 Java 并發(fā)編程。
2. 什么是并發(fā)編程?
所謂并發(fā)編程是指在一臺處理器上 “同時” 處理多個任務(wù)。并發(fā)是在同一實(shí)體上的多個事件。多個事件在同一時間間隔發(fā)生。
并發(fā)編程,從程序設(shè)計(jì)的角度來說,是希望通過某些機(jī)制讓計(jì)算機(jī)可以在一個時間段內(nèi),執(zhí)行多個任務(wù)。從計(jì)算機(jī) CPU 硬件層面來說,是一個或多個物理 CPU 在多個程序之間多路復(fù)用,提高對計(jì)算機(jī)資源的利用率。從調(diào)度算法角度來說,當(dāng)任務(wù)數(shù)量多于 CPU 的核數(shù)時,并發(fā)編程能夠通過操作系統(tǒng)的任務(wù)調(diào)度算法,實(shí)現(xiàn)多個任務(wù)一起執(zhí)行。
3. 并發(fā)編程的重要性
對于一個 Java 程序員而言,能否熟練掌握并發(fā)編程是判斷他優(yōu)秀與否的重要標(biāo)準(zhǔn)之一。因?yàn)椴l(fā)編程是 Java 語言中最為晦澀的知識點(diǎn),它涉及操作系統(tǒng)、內(nèi)存、CPU、編程語言等多方面的基礎(chǔ)能力,更為考驗(yàn)一個程序員的內(nèi)功。
并發(fā)編程在開發(fā)語言中占據(jù)著不可替代的位置。
4. 并發(fā)編程的特性
并發(fā)編程有三大特性:
-
原子性;
-
可見性;
-
有序性。
Tips: 后續(xù)的課程知識中,會對這些特性進(jìn)行詳細(xì)的詳解。了解并掌握并發(fā)編程的三大特性,非常重要。
5. 為什么學(xué)習(xí)并發(fā)編程?
可以這樣來說,在目前開發(fā)市場對于程序員的硬性要求中,并發(fā)編程占據(jù)了重要的位置,不懂并發(fā)編程的從業(yè)者不是一名合格的軟件工程師。
尤其是大數(shù)據(jù)時代的來臨,高并發(fā)更成為了家常便飯,工作中,你總是繞不開并發(fā)編程的任務(wù),比如說,你想寫個程序,一邊從文件中讀取數(shù)據(jù),一邊還要做實(shí)時計(jì)算… 所以,想成為一名資深的 Java 后端工程師,并發(fā)編程必須要牢牢把握。
6. 本套課程 JDK 版本
本套課程使用的 JDK 1.8 的版本。在進(jìn)行課程代碼實(shí)踐的過程中,推薦學(xué)習(xí)者至少使用 JDK 1.8 及以上版本。
Tips:如果有學(xué)習(xí)者使用 JDK 1.8 以下的版本,那至少要保證 JDK 版本高于 1.5。因?yàn)槲覀冋n程的 Lock 接口部分,是 JDK 1.5 版本之后的新特性,所以要至少保證JDK 版本高于 1.5。
7. 學(xué)習(xí)基礎(chǔ)
在開始學(xué)習(xí)并發(fā)編程之前,學(xué)習(xí)者需要掌握 JavaSE 的知識,這是學(xué)習(xí)并發(fā)編程的語言基礎(chǔ),也是 Java 程序員必備的基本功。