Java作為開(kāi)發(fā)語(yǔ)言中運(yùn)用廣的開(kāi)發(fā)語(yǔ)言,不管是在什么時(shí)候想要學(xué)習(xí)java語(yǔ)言的人都是很多的,那么對(duì)于想要學(xué)習(xí)java的學(xué)員來(lái)說(shuō),掌握好java的線程并發(fā)庫(kù)是十分的重要的。Java線程并發(fā)庫(kù)在java開(kāi)發(fā)中是非常的常見(jiàn)的,由此可見(jiàn)java線程并發(fā)庫(kù)的重要性,下面達(dá)內(nèi)科技的小編就帶大家一起來(lái)了解下什么是Java的線程并發(fā)庫(kù)。
(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)?
java.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 接口:以類似方式定義了一些讀取者可以共享而寫入者獨(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 版本中的不同。
以上就是達(dá)內(nèi)科技的小編給大家整理的關(guān)于java的線程并發(fā)庫(kù)的內(nèi)容了,如果說(shuō)活你想要學(xué)習(xí)java技術(shù)的話,那么達(dá)內(nèi)科技的小編歡迎大家來(lái)我們公司的java培訓(xùn)班進(jìn)行實(shí)地考察,也可以先點(diǎn)擊我們文章下面的獲取試聽(tīng)資格按鈕來(lái)獲取我們的java課程免費(fèi)試聽(tīng)資格,在試聽(tīng)中可以更加深入的了解我們達(dá)內(nèi)科技。