繁体   English   中英

使用ReentrantLock可靠吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM