从这个链接,我了解到“由于 lock() 和 unlock() 方法调用是显式的,我们可以将它们移动到任何地方,建立任何锁定范围,从一行代码到跨越多个方法的范围”
所以我从上面的陈述中理解的是
public class Test {
Lock l = new ReentrantLock();
void myMethod1() {
l.lock();
// Do my stuff here
}
void myMethod2() {
// Do more stuff here
l.unlock();
}
}
所以基本上1可以依次调用method1和method2,并假设调用是线程安全的。
我不确定是否如上面所说的那样是真的。
如果有人在我已经在执行 method1/method2 对时调用了 method2 怎么办?是不是把事情复杂化了。
我认为在函数返回控制之前,应该在函数本身中获取和释放锁。我的理解正确吗?