java - map 和 concurrentHashMap 的线程安全

标签 java multithreading

下面是两种方法,都创建 concurrentHashMap 的实例,我的理解是方法 2 是线程安全的,但方法 1 不是。但是我正在与同事和他交谈,因为两者都在创建 concurrentHashMap 的实例不应该接近 1 是也是线程安全的吗?

方法一:

private static final Map<key, value> map = new ConcurrentHashMap<key, value>();

方法二:

private static final ConcurrentHashMap<key, value> concurrentHashMap = new ConcurrentHashMap<key, value>();

如果对此有任何澄清,我们将不胜感激。

最佳答案

在这两种情况下,您都在创建一个 ConcurrentHashMap,因此线程安全性完全相同。

ConcurrentHashMap 实现了 Map 接口(interface),这是您在示例 1 中调用的接口(interface)。但这对实例化的底层对象没有影响。

关于java - map 和 concurrentHashMap 的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128548/

相关文章:

java - 我想使用 Java 中的生产者-消费者模型将竞争条件复制到死锁

java - MySQL 中的切换行语句不返回任何内容

objective-c - CoreBluetooth 代表主队列/主线程?

java - Lucene 良好实践和线程安全

java - Tomcat 7 创建多个 session

java - requestWindowFeature(Window.FEATURE_NO_TITLE);不工作

multithreading - 使用类成员函数时std::thread构造函数按引用传递

c++ - 从其他线程更新 QT Graphicview

java - 浮点精度: JDBC, double和DECIMAL,如何避免丢失?

c++ - 如何从另一个线程唤醒没有超时时间的 Select 调用