本篇內(nèi)容介紹了“Java的線程并發(fā)庫主要有哪些包”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
目前成都創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、容縣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
(1)java.util.concurrent包
java.util.concurrent包含許多線程安全、測試良好、高性能的并發(fā)構(gòu)建塊。不客氣地說, 創(chuàng)建java.util.concurrent的目的就是要實(shí)現(xiàn)Collection框架對數(shù)據(jù)結(jié)構(gòu)所執(zhí)行的并發(fā)操作。通過提供一組可靠的、高性能并發(fā)構(gòu)建塊,開發(fā)人員可以提高并發(fā)類的線程安全、可伸縮性、性能、可讀性和可靠性,后面、我們會做介紹。如果一些類名看起來相似,可能是因?yàn)?java.util.concurrent中的許多概念源自 Doug Lea的util.concurrent庫 。
(2)java.util.concurrent.atomic包
查看 atomic包文檔頁下面的介紹,它可以對多線程的基本數(shù)據(jù)、數(shù)組中的基本數(shù)據(jù)和對象中的基本數(shù)據(jù)進(jìn)行多線程的操作(AtomicInteger、AtomicIntegerArray、AtomicIntegerFieldUpDater…)
通過如下兩個(gè)方法快速理解 atomic包的意義:
AtomicInteger類的 boolean compareAndSet(expectedValue, updateValue);
AtomicIntegerArray類的 int addAndGet(int i, int delta);
順帶解釋 volatile類型的作用,需要查看 java語言規(guī)范。volatile修飾的變量,線程在每次使用變量的時(shí)候,都會讀取變量修改后的最的值。(具有可見性)volatile沒有原子性。
(3)java.util.concurrent.lock包
為鎖和等待條件提供一個(gè)框架的接口和類,它不同于內(nèi)置同步和監(jiān)視器。該框架允許更靈活地使用鎖和條件。本包下有三大接口,下面簡單介紹下:
Lock接口:支持那些語義不同(重入、公平等)的鎖規(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接口:描述了可能會與鎖有關(guān)聯(lián)的條件變量。這些變量在用法上與使用 Object.wait訪問的隱式監(jiān)視器類似,但提供了更強(qiáng)大的功能。需要特別指出的是,單個(gè) Lock可能與多個(gè) Condition對象關(guān)聯(lián)。為了避免兼容性問題,Condition方法的名稱與對應(yīng)的 Object版本中的不同。
“Java的線程并發(fā)庫主要有哪些包”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!