我搜索了很多,但对'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中:保证使用 synchronized 关键字获取对象上的锁。
但
在示例2中:是否保证将使用lock.lock()方法获取锁?还是线程会继续执行下一行?没有获得锁。
我对此表示怀疑,因为使用线程多次给我带来了意想不到的结果。