我正在寻找关于同步块的说明。考虑这个类 -Java - 同步对象/块
public class A{
Map map;
public getValue(String key){
return map.get(key);
}
public remove(String key){
synchronized(map){
map.remove(key);
}
}
}
A是一个单身人士。 getValue在整个应用程序中被多个线程大量访问。我添加一个新的方法,删除,从地图中删除一个键。如果删除是按照上述方式执行的,那么
- 当一个线程在remove方法的同步块中时,我认为它会获取地图对象上的一个锁。这是否意味着尝试通过getValue方法访问地图的其他线程将被阻止? (我希望他们)
- 当同步的remove方法中没有线程时,线程将像往常一样访问getValue方法函数,即不会互相阻塞? (我也喜欢)。
我希望getValue线程只有在有线程执行删除操作时才会阻塞。
只有同步的块才会阻塞。 – 2012-07-09 18:47:19