在java中 如何用Lock实现和synchronized(Object)的效果
private static ConcurrentHashMap<String,String> data = new ConcurrentHashMap<String,String>();
private String value = null;
public String getContent(receivingParameters) {
lock.lock(); try {
//synchronized (data) {
value = data.get(receivingParameters);
if (value == null) {
data.put(receivingParameters,//随机数);
return data.get(receivingParameters);
} else {
return value;
}
//}
}finally {
lock.unlock();
}
}
如果同时有多个请求同时传递一个receivingParameters,采用Lock会有几次存入不同的随机数,不符合要求。采用synchronized(data)就只会走一次value==null的判断,返回的都是同一个随机数,符合要求。
[解决办法]