if (!map.containsKey(key)) return map.put(key, value); else return map.get(key);
Thread A calls containsKey and finds out that the key is not present, but is immediately suspended.
Thread B calls containsKey and finds out that the key is not present, and has the time to insert its value v2.
Thread A resumes and inserts v1, "peacefully" overwriting (since put is threadsafe) the value inserted by thread B.
在多線程的環(huán)境中,必須使用 ConcurrentHashMap.putIfAbsent(K key, V value) 方法
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/67195.html
摘要:在有些情況下,原子操作可以在不使用關(guān)鍵字和鎖的情況下解決多線程安全問題。但其內(nèi)部的結(jié)果不是一個(gè)單一的值這個(gè)類的內(nèi)部維護(hù)了一組變量來減少多線程的爭(zhēng)用。當(dāng)來自多線程的更新比讀取更頻繁時(shí)這個(gè)類往往優(yōu)于其他的原子類。 原文地址: Java 8 Concurrency Tutorial: Atomic Variables and ConcurrentMap AtomicInteger java...
摘要:并發(fā)教程原子變量和原文譯者飛龍協(xié)議歡迎閱讀我的多線程編程系列教程的第三部分。如果你能夠在多線程中同時(shí)且安全地執(zhí)行某個(gè)操作,而不需要關(guān)鍵字或上一章中的鎖,那么這個(gè)操作就是原子的。當(dāng)多線程的更新比讀取更頻繁時(shí),這個(gè)類通常比原子數(shù)值類性能更好。 Java 8 并發(fā)教程:原子變量和 ConcurrentMap 原文:Java 8 Concurrency Tutorial: Synchroni...
摘要:是線程安全,性能出色的的線程安全實(shí)現(xiàn),相比較他是線程安全的,相比較他的性能優(yōu)勢(shì)非常明顯。的源碼其實(shí)很簡(jiǎn)單,和的結(jié)構(gòu)一致,但是每一個(gè)方法都是用來修飾,以保證操作是線程安全的。這樣在多線程的情況下,只有一個(gè)線程獲取鎖操作中的數(shù)據(jù)。 ConcurrentHashMap ConcurrentHashMap是線程安全,性能出色的Map的線程安全實(shí)現(xiàn),相比較HashMap他是線程安全的,相比較Ha...
摘要:什么時(shí)候會(huì)出現(xiàn)線程不安全操作并非原子。只有單個(gè)組件,且它是線程安全的。這種情況下,就是的線程安全實(shí)際是委托給了整個(gè)表現(xiàn)出了線程安全。 當(dāng)多個(gè)線程去訪問某個(gè)類時(shí),如果類會(huì)表現(xiàn)出我們預(yù)期出現(xiàn)的行為,那么可以稱這個(gè)類是線程安全的。 什么時(shí)候會(huì)出現(xiàn)線程不安全? 操作并非原子。多個(gè)線程執(zhí)行某段代碼,如果這段代碼產(chǎn)生的結(jié)果受不同線程之間的執(zhí)行時(shí)序影響,而產(chǎn)生非預(yù)期的結(jié)果,即發(fā)生了競(jìng)態(tài)條件,就會(huì)...
摘要:進(jìn)程線程與協(xié)程它們都是并行機(jī)制的解決方案。選擇是任意性的,并在對(duì)實(shí)現(xiàn)做出決定時(shí)發(fā)生。線程池的大小一旦達(dá)到最大值就會(huì)保持不變,如果某個(gè)線程因?yàn)閳?zhí)行異常而結(jié)束,那么線程池會(huì)補(bǔ)充一個(gè)新線程。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求。 并發(fā)與并行的概念 并發(fā)(Concurrency): 問題域中的概念—— 程序需要被設(shè)計(jì)成能夠處理多個(gè)同時(shí)(或者幾乎同時(shí))發(fā)生的事件 并行(Parallel...
閱讀 1669·2023-04-26 00:25
閱讀 980·2021-09-27 13:36
閱讀 991·2019-08-30 14:14
閱讀 2242·2019-08-29 17:10
閱讀 1076·2019-08-29 15:09
閱讀 2008·2019-08-28 18:21
閱讀 1035·2019-08-26 13:27
閱讀 1042·2019-08-26 10:58