从java中的两个线程同步对HashMap的访问

Kir*_*ran 4 java collections multithreading android synchronized

我有两个线程在运行(一个是主线程(Say Thread1),另一个是后台线程(比如说Thread2)).我可以从和访问HashMap变量.修改和Thread2读取HashMap.hashMapThread1Thread2Thread1hashMap

Thread1代码中将是:

synchronized(hashMap){
   //updating hashMap 
}
Run Code Online (Sandbox Code Playgroud)

在Thread2代码中将是:

synchronized(hashMap){
     //reading hashMap
}
Run Code Online (Sandbox Code Playgroud)

我可以hashMap通过synchronized block这种方式同步访问权限吗?

Ser*_*dar 5

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

Map yourMap = new HashMap();
Map synchronizedMap = java.util.Collections.synchronizedMap(yourMap);
Run Code Online (Sandbox Code Playgroud)

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