java - java中两个线程同步访问HashMap

标签 java android multithreading collections synchronized

我有两个线程在运行(一个是主线程(比如 Thread1),另一个是后台线程(比如 Thread2))。我可以从 Thread1Thread2 访问 HashMap 变量 hashMapThread1修改hashMap,Thread2读取HashMap。

Thread1 中,代码将是:

synchronized(hashMap){
   //updating hashMap 
}

在 Thread2 中的代码将是:

synchronized(hashMap){
     //reading hashMap
}

我可以这样使用synchronized block来同步对hashMap的访问吗?

最佳答案

是的。但您也可以使用 Collections.synchronizedMap 实用方法来使 hashmap 线程安全:

Map yourMap = new HashMap();
Map synchronizedMap = java.util.Collections.synchronizedMap(yourMap);

或者您可以使用默认情况下线程安全的ConcurrentHashMapHashtable

关于java - java中两个线程同步访问HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21659204/

相关文章:

java - 如何将连接字符串与 jdbc url 一起使用

java - 超出最大允许计数 : Semaphore

java - 从 List<Object> 填充 ListView

android - 无法使用 SearchView 提交查询

c - 如何向正在进行长时间操作的线程发送消息?

c++ - 为什么多线程循环不是更快?

java - 如何从 xml 文件中提取数据作为我的代码的输入

java - 如何在使用 documentBuilderFactory 解析时管理 xml 中的嵌套循环

android - 为什么 subview 从父布局继承 alpha 值

multithreading - TThread.Synchronize 在 Delphi 2009 中导致(接近)死锁(在 Delphi 7 中工作)