使用ReentrantLock可靠同步吗?

时间:2015-11-14 03:59:24

标签: java multithreading concurrency reentrantlock

我搜索了很多,但对'ReentrantLock'和普通'同步'的过程感到困惑。

例如( 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 中:保证使用synchronized关键字获取对象的锁定。

但是

例如 2 是否可以保证使用 lock.lock()方法获取锁定?或者线程会进入下一行执行?没有获得锁定。

我对此表示怀疑,因为使用线程已经多次为我带来意想不到的结果。

1 个答案:

答案 0 :(得分:5)

只有一个线程会获得锁定:这是ReentrantLock的合同。

因此,您的示例2完全是线程安全的。