java技術(shù)教程之線程并發(fā)庫(kù)介紹

java技術(shù)教程之線程并發(fā)庫(kù)介紹

長(zhǎng)沙一度軟件培訓(xùn)      2022-03-23 16:40:01     6

java技術(shù)教程之線程并發(fā)庫(kù)介紹,對(duì)于Java程序員而言,了解并掌握多線程是極其重要的,因?yàn)槎嗑€程在工作中的使用場(chǎng)景實(shí)在是太常見(jiàn)了。而僅僅掌握了Java中的傳統(tǒng)多

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

對(duì)于Java程序員而言,了解并掌握多線程是極其重要的,因?yàn)槎嗑€程在工作中的使用場(chǎng)景實(shí)在是太常見(jiàn)了。而僅僅掌握了Java中的傳統(tǒng)多線程機(jī)制還是不夠的,下面給大家介紹一下Java線程并發(fā)庫(kù),主要包括java.util.concurrent包、java.util.concurrent.atomic包和java.util.concurrent.lock包。

1.java.util.concurrent包

java.util.concurrent包含許多線程安全、測(cè)試良好、高性能的并發(fā)構(gòu)建塊。不客氣地說(shuō),創(chuàng)建java.util.concurrent的目的就是要實(shí)現(xiàn)Collection框架對(duì)數(shù)據(jù)結(jié)構(gòu)所執(zhí)行的并發(fā)操作。通過(guò)提供一組可靠的、高性能并發(fā)構(gòu)建塊,開(kāi)發(fā)人員可以提高并發(fā)類的線程安全、可伸縮性、性能、可讀性和可靠性,后面、我們會(huì)做介紹。如果一些類名看起來(lái)相似,可能是因?yàn)閖ava.util.concurrent中的許多概念源自Doug Lea的util.concurrent庫(kù)。

2.java.util.concurrent.atomic包

查看atomic包文檔頁(yè)下面的介紹,它可以對(duì)多線程的基本數(shù)據(jù)、數(shù)組中的基本數(shù)據(jù)和對(duì)象中的基本數(shù)據(jù)進(jìn)行多線程的操作(AtomicInteger、AtomicIntegerArray、AtomicIntegerFieldUpDater…)

通過(guò)如下兩個(gè)方法快速理解atomic包的意義:

AtomicInteger類的boolean compareAndSet(expectedValue,updatevalue);AtomicIntegerArray類的int addAndGet(int i,int delta);

順帶解釋volatile類型的作用,需要查看java語(yǔ)言規(guī)范。volatile修飾的變量,線程在每次使用變量的時(shí)候,都會(huì)讀取變量修改后的最的值。(具有可見(jiàn)性)volatile沒(méi)有原子性。

3.java.util.concurrent.lock包

為鎖和等待條件提供一個(gè)框架的接口和類,它不同于內(nèi)置同步和監(jiān)視器。該框架允許更靈活地使用鎖和條件。本包下有三大接口,下面簡(jiǎn)單介紹下:

Lock接口:支持那些語(yǔ)義不同(重入、公平等)的鎖規(guī)則,可以在非阻塞式結(jié)構(gòu)的上下文(包括hand-over-hand和鎖重排算法)中使用這些規(guī)則。主要的實(shí)現(xiàn)是ReentrantLock。

ReadWriteLock接口:以類似方式定義了一些讀取者可以共享而寫(xiě)入者獨(dú)占的鎖。此包只提供了一個(gè)實(shí)現(xiàn),即ReentrantReadWriteLock,因?yàn)樗m用于大部分的標(biāo)準(zhǔn)用法上下文。但程序員可以創(chuàng)建自己的、適用于非標(biāo)準(zhǔn)要求的實(shí)現(xiàn)。

Condition接口:描述了可能會(huì)與鎖有關(guān)聯(lián)的條件變量。這些變量在用法上與使用Object.wait訪問(wèn)的隱式監(jiān)視器類似,但提供了更強(qiáng)大的功能。需要特別指出的是,單個(gè)Lock可能與多個(gè)Condition對(duì)象關(guān)聯(lián)。為了避免兼容性問(wèn)題,Condition方法的名稱與對(duì)應(yīng)的Object版本中的不同。

以上就是長(zhǎng)沙一度軟件培訓(xùn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“java技術(shù)教程之線程并發(fā)庫(kù)介紹”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。