你好我有一些关于Lock's implementation: ReentrantLock
. 我正在使用singleton cache
内部Spring 3.0(web)
。但是,当我同时打开几个浏览器选项卡时,所有线程似乎都被锁定,并且我收到了几个不必要的 Web 服务调用。为什么是这样?不是lock.tryLock()
线程安全的吗?我尝试使用 an atomic boolean
,但问题仍然存在。我还检查了引用的同一个 Cache 实例。
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class SomeCache {
private List<Object> stuff;
private Lock lock;
public SomeCache() {
lock = new ReentrantLock();
}
public List<Object> getStuff() {
if(lock.tryLock()) {
try{
//call webService
}
finally {
lock.unlock();
}
}
else {
//get other data
}
return stuff;
}
}
提前谢谢,干杯。