java 樂觀鎖 會不會超生死鎖?

時間 2021-05-31 12:48:18

1樓:靈劍

從定義上來說樂觀鎖不會死鎖,因為它根本就沒有真正鎖的過程,它的原理是在過程開始之前記錄住幾個key的版本號,再結束提交的時候檢查版本號,如果版本號變動了,就回滾掉整個過程重來,它本身並沒有可以死鎖的機制,因為不像悲觀鎖那樣有阻塞的過程。

但是有幾個問題,乙個是有可能提交時的版本號檢查這一步是通過悲觀鎖進行的,那這一步的實現自己可能會死鎖;二是如果跟其他鎖聯動了,可能會間接導致死鎖;三是某些實現中如果用到了兩步提交,如果不排好序按順序進行提交,可能會出現兩個請求不停地互相回滾掉,再次執行再次衝突,再次互相回滾掉,這種一般不叫做死鎖,因為有可能嘗試一定次數之後自己解開了,但是仍然會嚴重影響執行效率並浪費大量的CPU時間。有些地方也叫做活鎖(livelock)。

然後是你舉的這個程式的例子,因為這個列表要返回,返回值可能會給其他執行緒使用,所以為了謹慎直接建立乙個執行緒安全的List不算錯,保不准後面的其他過程中,會不會往這個List中追加物件。不過要是我設計的話肯定不會有這個介面,為什麼會有乙個介面專門排序兩個物件,而不是抽象度更高的任意多個物件……

不會游泳的人在生死瞬間會不會學會游泳?

馬氏 親身經歷,8歲夏天一直跟著鄰居孩子在附近的魚塘裡玩,那時候都是用輪子內胎或者小方塊形的泡沫用繩子串起來當泳圈,出事之前時候我都是帶著泡沫圈仰泳的姿勢划水,那次在魚塘玩的時候有幾個小孩說要游到魚塘對面去,我用泡沫圈慢慢划水也跟著去了,遊到一半我泡沫圈繩子斷了小泡沫板都散開了,瞬間就有點慌撲騰了幾...

人死後,到底會不會有輪迴,或者不被超生?

黎石 或許是有的,不過輪迴的只是 人 像 你 我 他 這樣的個體是沒有輪迴的,俗話說人生一世,草木一秋 樹木春天發芽生長,深秋落葉枯萎,對於樹來說這就是一世。就算待到來年重新長出葉子,只是經受的風吹雨打不同,熬過的夏暑秋霜不同,在葉子旁邊偶爾停落鳥雀也不同了 人 就如那輪迴中不變的樹根 好吧,我自動...

醫生見慣生死,會不會變得鐵石心腸?

京城之醫 醫生的心也是肉長的,我們不是變成了鐵石心腸,我們只是強忍著看淡,因為如果我們每個病人離去都要悲傷,那醫生這個工作沒法幹了,像ICU和急診的醫生,他們不強制自己看淡,怎麼當醫生? 暖暖 當然不會,今天10點哀悼的時候心情很低落,若不是在上班真的會落淚。醫護 消防員,這麼多條命啊,多少人還沒有...