偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

并發(fā)編程:Atomic類(lèi)與悲觀(guān)鎖和樂(lè)觀(guān)鎖

開(kāi)發(fā) 前端
CAS都是基于“值”來(lái)做比較的。但如果另外一個(gè)線(xiàn)程把變量的值從A改為B,再?gòu)腂改回 到A,那么盡管修改過(guò)兩次,可是在當(dāng)前線(xiàn)程做CAS操作的時(shí)候,卻會(huì)因?yàn)橹禌](méi)變而認(rèn)為數(shù)據(jù)沒(méi)有被其他 線(xiàn)程修改過(guò),這就是所謂的ABA問(wèn)題。

一、悲觀(guān)鎖與樂(lè)觀(guān)鎖

對(duì)于悲觀(guān)鎖,認(rèn)為數(shù)據(jù)發(fā)生并發(fā)沖突的概率很大,讀操作之前就上鎖。synchronized關(guān)鍵字,后面 要講的ReentrantLock都是悲觀(guān)鎖的典型。

對(duì)于樂(lè)觀(guān)鎖,認(rèn)為數(shù)據(jù)發(fā)生并發(fā)沖突的概率比較小,讀操作之前不上鎖。等到寫(xiě)操作的時(shí)候,再判 斷數(shù)據(jù)在此期間是否被其他線(xiàn)程修改了。如果被其他線(xiàn)程修改了,就把數(shù)據(jù)重新讀出來(lái),重復(fù)該過(guò)程; 如果沒(méi)有被修改,就寫(xiě)回去。判斷數(shù)據(jù)是否被修改,同時(shí)寫(xiě)回新值,這兩個(gè)操作要合成一個(gè)原子操作, 也就是CAS ( Compare And Set )。

AtomicInteger的實(shí)現(xiàn)就是典型的樂(lè)觀(guān)鎖。

AtomicInteger的實(shí)現(xiàn)就用的是“自旋”策略,如果拿不到鎖,就會(huì)一直重試。

二、ABA問(wèn)題與解決辦法

到目前為止,CAS都是基于“值”來(lái)做比較的。但如果另外一個(gè)線(xiàn)程把變量的值從A改為B,再?gòu)腂改回 到A,那么盡管修改過(guò)兩次,可是在當(dāng)前線(xiàn)程做CAS操作的時(shí)候,卻會(huì)因?yàn)橹禌](méi)變而認(rèn)為數(shù)據(jù)沒(méi)有被其他 線(xiàn)程修改過(guò),這就是所謂的ABA問(wèn)題。

舉例來(lái)說(shuō): 小張欠小李100塊,約定今天還,給打到網(wǎng)銀。 小李家的網(wǎng)銀余額是0,打過(guò)來(lái)之后應(yīng)該是100塊。 小張今天還錢(qián)這個(gè)事小李知道,小李還告訴了自己媳婦。 小張還錢(qián),小李媳婦看到了,就取出來(lái)花掉了。 小李恰好在他媳婦取出之后檢查賬戶(hù),一看余額還是0。 然后找小張,要賬。

這其中,小李家的賬戶(hù)余額從0到100,再?gòu)?00到0,小李一開(kāi)始檢查是0,第二次檢查還是0,就 認(rèn)為小張沒(méi)還錢(qián)。 實(shí)際上小李媳婦花掉了。 ABA問(wèn)題。 其實(shí)小李可以查看賬戶(hù)的收支記錄。

要解決 ABA 問(wèn)題,不僅要比較“值”,還要比較“版本號(hào)”,而這正是 AtomicStampedReference做的事情。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2020-07-06 08:03:32

Java悲觀(guān)鎖樂(lè)觀(guān)鎖

2009-09-25 16:43:44

Hibernate悲觀(guān)Hibernate樂(lè)觀(guān)

2024-05-17 09:33:22

樂(lè)觀(guān)鎖CASversion

2023-02-23 10:32:52

樂(lè)觀(guān)鎖

2021-03-30 09:45:11

悲觀(guān)鎖樂(lè)觀(guān)鎖Optimistic

2024-09-03 15:14:42

2025-04-23 08:45:00

悲觀(guān)鎖樂(lè)觀(guān)鎖并發(fā)控制機(jī)制

2024-01-29 01:08:01

悲觀(guān)鎖遞歸鎖讀寫(xiě)鎖

2011-08-18 13:44:42

Oracle悲觀(guān)鎖樂(lè)觀(guān)鎖

2024-07-25 09:01:22

2010-08-18 09:00:38

數(shù)據(jù)庫(kù)

2019-04-19 09:48:53

樂(lè)觀(guān)鎖悲觀(guān)鎖數(shù)據(jù)庫(kù)

2019-11-28 16:00:06

重入鎖讀寫(xiě)鎖樂(lè)觀(guān)鎖

2019-05-05 10:15:42

悲觀(guān)鎖樂(lè)觀(guān)鎖數(shù)據(jù)安全

2019-01-04 11:18:35

獨(dú)享鎖共享鎖非公平鎖

2018-07-31 10:10:06

MySQLInnoDB死鎖

2023-08-17 14:10:11

Java開(kāi)發(fā)前端

2020-09-16 07:56:28

多線(xiàn)程讀寫(xiě)鎖悲觀(guān)鎖

2024-01-05 16:43:30

數(shù)據(jù)庫(kù)線(xiàn)程

2020-10-22 08:21:37

樂(lè)觀(guān)鎖、悲觀(guān)鎖和MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)