[英]Is using ReentrantLock reliable as synchronized?
我进行了很多搜索,但对“ 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中 :可以确保使用synced关键字获取对象上的锁。
但
在示例2中 : 是否可以确保使用lock.lock()方法获取锁? 还是线程将继续执行下一行? 不获取锁。
我对此表示怀疑,因为使用线程多次导致了意外结果。
只有一个线程将获得该锁:这是ReentrantLock
的合同。
因此,示例2完全是线程安全的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.