Java的面向?qū)ο缶幊?/a>">Java的面向?qū)ο缶幊?/a>
628
2025-04-04
一、多線程并發(fā)有兩個(gè)大發(fā)庫(kù)在 Java.util.concurrent 包及子包中
1) Java.util.concurrent 包 (多線程并發(fā)庫(kù))
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ā)操作。
2) java.util.concurrent.atomic 包 (多線程的原子性操作提供的工具類)
查看 atomic 包文檔頁(yè)下面的介紹,它可以對(duì)多線程的基本數(shù)據(jù)、數(shù)組中的基本數(shù)據(jù)和對(duì)象中的基本數(shù)據(jù)進(jìn)行多線程的操作(AtomicInteger、AtomicIntegerArray、AtomicIntegerFieldUpDater…)
volatile 類型的作用:
volatile 修飾的變量,線程在每次使用變量的時(shí)候,都會(huì)讀取變量修改后的最的值。(具有可見(jiàn)性)
volatile 沒(méi)有原子性
3) java.util.concurrent.lock 包 (多線程的鎖機(jī)制)
為鎖和等待條件提供一個(gè)框架的接口和類,它不同于內(nèi)置同步和監(jiān)視器。該框架允許更靈活地使用鎖和條件。
本包下有三大接口
1. Lock 接口:支持那些語(yǔ)義不同(重入、公平等)的鎖規(guī)則,可以在非阻塞式結(jié)構(gòu)的上下文(包括 handover-hand 和鎖重排算法)中使用這些規(guī)則。主要的實(shí)現(xiàn)是 ReentrantLock。
2.ReadWriteLock 接口:以類似方式定義了一些讀取者可以共享而寫(xiě)入者獨(dú)占的鎖。此包只提供了一個(gè)實(shí)現(xiàn),即 ReentrantReadWriteLock,因?yàn)樗m用于大部分的標(biāo)準(zhǔn)用法上下文。但程序員可以創(chuàng)建自己的、適用于非標(biāo)準(zhǔn)要求的實(shí)現(xiàn)。
3.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 版本中的不同
二、java.util.concurrent 包下的常用類的使用
在并發(fā)編程中很常用的實(shí)用工具類。此包包括了幾個(gè)小的、已標(biāo)準(zhǔn)化的可擴(kuò)展框架,以及一些提供有用功能
的類。此包下有一些組件,其中包括:
1.執(zhí)行程序(線程池)
2. 并發(fā)隊(duì)列
3. 同步器
4. 并發(fā) Collocation
Java
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。