JAVA中线程安全的map都有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中线程安全的map都有哪些?相关的知识,希望对你有一定的参考价值。

如题。

JAVA中线程安全的map有:Hashtable、synchronizedMap、ConcurrentHashMap。

java中map中线程安全怎么实现:

    同步的map就是Hashtable, concurrenthashmap。

    你看到的Hashtable就是直接在hashmap上加了个锁,concurrenthashmap就是分成多个分段锁。

java代码中线程安全级别:

    绝对线程安全。

    在任何环境下,调用者都不需要考虑额外的同步措施,都能够保证程序的正确性。

    这个定义要求很严格,java里面满足这个要求的类比较少,对于实现jsr133规范(java内存模型)的jdk(一般指jdk5.0之上),一般的不变类都是满足绝地线程安全的。比如 String,Integer类。一般情况下,定义了如果一个类里面所有字段都是final类型的,一般都认为这个类是不变的。不变类都是绝对线程安全的。

    相对线程安全   

    在一般情况下,调用者都不需要考虑线程同步,大多数情况下,都能够正常运行。jdk里面大多数类都是相对安全的。最常见的例子是java里面Vector类。

参考技术A Hashtable、synchronizedMap、ConcurrentHashMap

二楼说的HashMap是非线程安全的本回答被提问者采纳
参考技术B ConcurrentMap 这个效率高点
HashMap
参考技术C HashTable我记得好像只有这一个

如何确保Java线程安全?

在Java中可以有很多方法来保证线程安全——同步,使用原子类(atomicconcurrentclasses),实现并发锁,使用volatile关键字,使用不变类和线程安全类。 参考技术A java中,线程安全的解决方法或过程:
1.如果对象是immutable,则是线程安全的,例如:String,可以放心使用。
2. 如果对象是线程安全的,则放心使用。
3.有条件线程安全,对于Vector和Hashtable一般情况下是线程安全的,但是对于某些特殊情况,需要通过额外的synchronized保证线程安全。
4.使用synchronized关键字。

以上是关于JAVA中线程安全的map都有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

Java中,map分为哪些种类?

用过哪些Map,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如hashcode,扩容等

如何确保Java线程安全?

Java线程安全和非线程安全

Java面试题HashMap的底层原理和线程安全的替代方案

Go Map 为啥是非线程安全的?