摘要:解決上問(wèn)題在變量前添加版本號(hào),將變成循環(huán)時(shí)間長(zhǎng)開銷大,因?yàn)樽孕枰闹荒鼙WC一個(gè)共享變量的原子操作分類二重入鎖支持重進(jìn)入的鎖,排它鎖分類三讀寫鎖一對(duì)鎖,讀鎖,寫鎖,在同一時(shí)刻允許多線程訪問(wèn)
1、 分類一:樂(lè)觀鎖與悲觀鎖
a)悲觀鎖:認(rèn)為其他線程會(huì)干擾本身線程操作,所以加鎖
i.具體表現(xiàn)形式:synchronized關(guān)鍵字和lock實(shí)現(xiàn)類
b)樂(lè)觀鎖:認(rèn)為沒(méi)有其他線程會(huì)影響本身線程操作,所以不加鎖
i.具體表現(xiàn)形式:java的原子類的遞增操作 ii.原理:采用cas算法
c)Cas算法:交換與比較
i.涉及三個(gè)數(shù):需要讀寫的內(nèi)存值V,進(jìn)行比較的值A(chǔ),要寫入的新值B ii.具體操作:若A=V,就用B更新V,否則不進(jìn)行任何操作 iii.會(huì)用ABA問(wèn)題:cas算法需要判斷內(nèi)存值V是否發(fā)生變化,如果a值變成b值然后又變回a值,cas算法就會(huì)無(wú)法判斷,產(chǎn)生錯(cuò)誤。解決上問(wèn)題:在變量前添加版本號(hào),將aba變成1a2b3c iv.循環(huán)時(shí)間長(zhǎng)開銷大,因?yàn)樽孕枰腸pu v.只能保證一個(gè)共享變量的原子操作2、 分類二
a) 重入鎖:支持重進(jìn)入的鎖,排它鎖
3、 分類三a)讀寫鎖:一對(duì)鎖,讀鎖,寫鎖,在同一時(shí)刻允許多線程訪問(wèn)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72804.html
摘要:有可能,會(huì)造成優(yōu)先級(jí)反轉(zhuǎn)或者饑餓現(xiàn)象。悲觀鎖在中的使用,就是利用各種鎖。對(duì)于而言,其是獨(dú)享鎖。偏向鎖,顧名思義,它會(huì)偏向于第一個(gè)訪問(wèn)鎖的線程,大多數(shù)情況下鎖不僅不存在多線程競(jìng)爭(zhēng),而且總是由同一線程多次獲得。 理解鎖的基礎(chǔ)知識(shí) 如果想要透徹的理解java鎖的來(lái)龍去脈,需要先了解以下基礎(chǔ)知識(shí)。 基礎(chǔ)知識(shí)之一:鎖的類型 按照其性質(zhì)分類 公平鎖/非公平鎖 公平鎖是指多個(gè)線程按照申請(qǐng)鎖的順序來(lái)獲...
摘要:行級(jí)鎖,頁(yè)級(jí)鎖,表級(jí)鎖。聞其名知其意,比較少見(jiàn)的是頁(yè)級(jí)鎖,它鎖定的是一組相鄰數(shù)據(jù)。排他鎖允許獲得排他鎖的事務(wù)更新數(shù)據(jù),阻止其他事務(wù)取得相同數(shù)據(jù)集的讀寫。意向排他鎖事務(wù)打算給數(shù)據(jù)行加行排他鎖,事務(wù)在給一個(gè)數(shù)據(jù)行加排他鎖前必須先取得該表的鎖。 廢話 本篇的名字簡(jiǎn)直可以起成《事務(wù)操作:從入門到放棄》。 力圖解決:在MySQL 5.5 版本及更高版本時(shí),使用事務(wù)的完整流程和細(xì)節(jié)記錄,而無(wú)需面對(duì)...
閱讀 1395·2021-11-04 16:11
閱讀 3059·2021-10-12 10:11
閱讀 2992·2021-09-29 09:47
閱讀 1627·2021-09-22 15:40
閱讀 1025·2019-08-29 15:43
閱讀 2814·2019-08-29 13:50
閱讀 1591·2019-08-29 13:28
閱讀 2698·2019-08-29 12:54