Hi everyone,
Currently We are developing a system that requires a lot of usages of Java
concurrency. There seem to be some
concurrent bugs in our system. Thus I just wonder about the following usage of
lock
class Test{
private final PInfo obj = new PInfo();
private ReentrantLock lock = new ReentrantLock();
...
public void put(long n){
try{
lock.lock();
obj.put(n);
}
finally { lock.unlock();}
}
}
The question is: does the lock.lock() statement will guarantee that subsequent
methods stacks
which involved with obj.put(n) will be synchronized ? that is to say, the
fields of the object obj
will be read/write directly from main memory and never cache.
Thank you and regards
Bhm