我搜索了很多,但与'ReentrantLock'和正常'synchronized'的过程相混淆。
例如(1):
Object obj = new Object();
synchronized(obj){
//lock is guaranteed to be acquired
}示例(2)
Lock lock = new ReentrantLock();
lock.lock(); //problem here
try{
//dostuff
}
finally{
lock.unlock();
}我的问题是:
例如,1:它保证使用同步关键字获取对象的锁。
但
例如,2:是否保证使用lock.lock()方法获取锁?或者线程会继续到下一行执行吗??而不需要锁。
我对此表示怀疑,因为使用线程给我带来了很多次意想不到的结果。
发布于 2015-11-14 04:02:42
只有一个线程将获得锁:这是ReentrantLock的契约。
因此,示例2是完全线程安全的。
https://stackoverflow.com/questions/33704951
复制相似问题