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