溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java并發(fā)編程學(xué)習(xí)方法是什么

發(fā)布時(shí)間:2021-12-21 16:26:36 來(lái)源:億速云 閱讀:172 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“Java并發(fā)編程學(xué)習(xí)方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java并發(fā)編程學(xué)習(xí)方法是什么”吧!

一:并發(fā)基礎(chǔ)和多線程

首先需要學(xué)習(xí)的就是并發(fā)的基礎(chǔ)知識(shí),什么是并發(fā),為什么要并發(fā),多線程的概念,線程安全的概念等。

然后學(xué)會(huì)使用Java中的Thread或是其他線程實(shí)現(xiàn)方法,了解線程的狀態(tài)轉(zhuǎn)換,線程的方法,線程的通信方式等。

二:JMM內(nèi)存模型

任何語(yǔ)言最終都是運(yùn)行在處理器上,JVM虛擬機(jī)為了給開(kāi)發(fā)者一個(gè)一致的編程內(nèi)存模型,需要制定一套規(guī)則,這套規(guī)則可以在不同架構(gòu)的機(jī)器上有不同實(shí)現(xiàn),并且向上為程序員提供統(tǒng)一的JMM內(nèi)存模型。

所以了解JMM內(nèi)存模型也是了解Java并發(fā)原理的一個(gè)重點(diǎn),其中了解指令重排,內(nèi)存屏障,以及可見(jiàn)性原理尤為重要。

JMM只保證happens-before和as-if-serial規(guī)則,所以在多線程并發(fā)時(shí),可能出現(xiàn)原子性,可見(jiàn)性以及有序性這三大問(wèn)題。

下面的內(nèi)容則會(huì)講述Java是如何解決這三大問(wèn)題的。

三:synchronized,volatile,final等關(guān)鍵字

對(duì)于并發(fā)的三大問(wèn)題,volatile可以保證原子性和可見(jiàn)性,synchronized三種特性都可以保證(允許指令重排)。

synchronized是基于操作系統(tǒng)的mutex lock指令實(shí)現(xiàn)的,volatile和final則是根據(jù)JMM實(shí)現(xiàn)其內(nèi)存語(yǔ)義。

此處還要了解CAS操作,它不僅提供了類似volatile的內(nèi)存語(yǔ)義,并且保證操作原子性,因?yàn)樗怯捎布?shí)現(xiàn)的。

JUC中的Lock底層就是使用volatile加上CAS的方式實(shí)現(xiàn)的。synchronized也會(huì)嘗試用cas操作來(lái)優(yōu)化器重量級(jí)鎖。

了解這些關(guān)鍵字是很有必要的。

四:JUC包

在了解完上述內(nèi)容以后,就可以看看JUC的內(nèi)容了。

JUC提供了包括Lock,原子操作類,線程池,同步容器,工具類等內(nèi)容。

這些類的基礎(chǔ)都是AQS,所以了解AQS的原理是很重要的。

除此之外,還可以了解一下Fork/Join,以及JUC的常用場(chǎng)景,比如生產(chǎn)者消費(fèi)者,阻塞隊(duì)列,以及讀寫(xiě)容器等。


五:實(shí)踐

上述這些內(nèi)容,除了JMM部分的內(nèi)容比較不好實(shí)現(xiàn)之外,像是多線程基本使用,JUC的使用都可以在代碼實(shí)踐中更好地理解其原理。多嘗試一些場(chǎng)景,或者在網(wǎng)上找一些比較經(jīng)典的并發(fā)場(chǎng)景,或者參考別人的例子,在實(shí)踐中加深理解,還是很有必要的。

六:補(bǔ)充

由于很多Java新手可能對(duì)并發(fā)編程沒(méi)什么概念,在這里放一篇不錯(cuò)的總結(jié),簡(jiǎn)要地提幾個(gè)并發(fā)編程中比要重要的點(diǎn),也是比較基本的點(diǎn)嗎,算是拋磚引玉,開(kāi)個(gè)好頭,在大致了解了這些基礎(chǔ)內(nèi)容以后,才能更好地開(kāi)展后面詳細(xì)內(nèi)容的學(xué)習(xí)。

感謝各位的閱讀,以上就是“Java并發(fā)編程學(xué)習(xí)方法是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java并發(fā)編程學(xué)習(xí)方法是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI