我有两个线程在运行(一个是主线程(比如 Thread1
),另一个是后台线程(比如 Thread2
))。我可以从 Thread1
和 Thread2
访问 HashMap
变量 hashMap
。 Thread1
修改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);
或者您可以使用默认情况下线程安全的ConcurrentHashMap 或Hashtable。
关于java - java中两个线程同步访问HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21659204/