我有以下代码:
public Hashmap<String,String> tempmap = new HashMap<String,String>();
和一个类函数:
void f1(){
synchronized(onClassVariable1){
....Some code onClassVariable1...
String tempString = tempMap.toString();
... Some work onClassVarible1 and tempString ...
}
}
多个线程通过此类的对象调用此函数f1 ..
这个函数是线程安全的吗?
答案 0 :(得分:6)
这取决于是否存在不在onClassVariable1
上同步并修改tempMap
的方法。
答案 1 :(得分:0)
HashMap
中没有是线程安全的,而Javadoc是这样说的:“如果多个线程同时访问哈希映射,并且至少有一个线程在结构上修改了映射,它必须在外部同步。“