在方法的本地范围内创建的 ReentrantLock 对象将如何工作?

How will ReentrantLock object created inside a method's local scope work?

以上是 OCP 7 java se 书中的屏幕截图。第 791 页。

我的问题是,如果每次都在一个方法中创建一个新的 ReentrantLock 对象并锁定,那么如何从 运行 locklock 之间的代码块中停止两个线程unlock?两个线程不会各自创建一个ReentrantLock对象并锁定吗?我可以想象如果 lock 对象是一个只实例化一次并且永远不会改变的实例变量,这将如何工作。 (最好是 final)。

我是不是误会了什么?

我已经问过 但没有得到明确的答复。

你每次都在方法本身中创建一个 'ReentrantLock' 是正确的,以便同步该锁上的线程是行不通的。必须有一个 "shared" 锁定对象。

书中的例子可能过于简单了。

documentation of ReentrantLock使用下面的例子:

class X {
   private final ReentrantLock lock = new ReentrantLock();
   // ...

   public void m() {
     lock.lock();  // block until condition holds
     try {
       // ... method body
     } finally {
       lock.unlock()
     }
   }
 }