c++map 如何让HashMap变成线程安全的?
浏览量:2943
时间:2021-03-14 11:58:00
作者:admin
如何让HashMap变成线程安全的?
有两种方法可以使HashMap线程安全,如下所示:方法1:通过集合.synchronizedMap()返回线程安全的新映射。这要求我们习惯于基于接口的编程,因为我们返回的不是HashMap,而是map实现。方法2:重写HashMap,可以看到细节java.util.concurrent文件. 并发哈希映射。这种方法比方法一好得多。
linux多线程中(c )map操作erase的时候产生core!请各位大神帮我解惑?
这种情况通常是由于线程不同步造成的。STL不是线程安全的。如果同时在多个线程中操作同一映射,则必须自己同步。
hashmap和concurrentmap区别?
由于jdk1.2,一些hashmaps不是线程安全的,所以在进行多线程处理时必须非常小心。从JDK1.5开始,我们引入了并发包来实现map的线程安全。
此外,并发HashMap和hashtable之间的主要区别在于锁的粒度以及如何锁定它们。它可以简单地理解为将一个大哈希表分解为多个,形成锁分离。
从concurrent HashMap的代码可以看出,它引入了“segment lock”的概念,可以理解为将一个大的map拆分成n个小的hashtables关键字.hashCode()以决定将键放入哪个哈希表。
在concurrent HashMap中,映射被划分为n个段。当你输入和获取时,它是基于电流的关键字.hashCode()找出要放的段。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。