c++map 如何讓HashMap變成線程安全的?
如何讓HashMap變成線程安全的?有兩種方法可以使HashMap線程安全,如下所示:方法1:通過(guò)集合.synchronizedMap()返回線程安全的新映射。這要求我們習(xí)慣于基于接口的編程,因?yàn)槲覀?/p>
如何讓HashMap變成線程安全的?
有兩種方法可以使HashMap線程安全,如下所示:方法1:通過(guò)集合.synchronizedMap()返回線程安全的新映射。這要求我們習(xí)慣于基于接口的編程,因?yàn)槲覀兎祷氐牟皇荋ashMap,而是map實(shí)現(xiàn)。方法2:重寫HashMap,可以看到細(xì)節(jié)java.util.concurrent文件. 并發(fā)哈希映射。這種方法比方法一好得多。
linux多線程中(c )map操作erase的時(shí)候產(chǎn)生core!請(qǐng)各位大神幫我解惑?
這種情況通常是由于線程不同步造成的。STL不是線程安全的。如果同時(shí)在多個(gè)線程中操作同一映射,則必須自己同步。
hashmap和concurrentmap區(qū)別?
由于jdk1.2,一些hashmaps不是線程安全的,所以在進(jìn)行多線程處理時(shí)必須非常小心。從JDK1.5開(kāi)始,我們引入了并發(fā)包來(lái)實(shí)現(xiàn)map的線程安全。
此外,并發(fā)HashMap和hashtable之間的主要區(qū)別在于鎖的粒度以及如何鎖定它們。它可以簡(jiǎn)單地理解為將一個(gè)大哈希表分解為多個(gè),形成鎖分離。
從concurrent HashMap的代碼可以看出,它引入了“segment lock”的概念,可以理解為將一個(gè)大的map拆分成n個(gè)小的hashtables關(guān)鍵字.hashCode()以決定將鍵放入哪個(gè)哈希表。
在concurrent HashMap中,映射被劃分為n個(gè)段。當(dāng)你輸入和獲取時(shí),它是基于電流的關(guān)鍵字.hashCode()找出要放的段。