这可能是如何执行的。
- 输入
alphonse.bow(gaston);
,由于synchronized
关键字已锁定Alphonse - 输入
gaston.bow(alphonse);
,加斯顿现已锁定 - 无法
bower.bowBack(this);
通过第一个bow
方法调用执行,因为加斯顿(鲍尔)被锁定。等待锁被释放。 - 由于alphonse(上弦器)已锁定,因此无法
bower.bowBack(this);
从第二个bow
方法调用执行。等待锁被释放。
两个线程都互相等待释放锁。

这可能是如何执行的。
alphonse.bow(gaston);,由于
synchronized关键字已锁定Alphonse
gaston.bow(alphonse);,加斯顿现已锁定
bower.bowBack(this);通过第一个
bow方法调用执行,因为加斯顿(鲍尔)被锁定。等待锁被释放。
bower.bowBack(this);从第二个
bow方法调用执行。等待锁被释放。
两个线程都互相等待释放锁。