定时等待认证模拟考试

Certification practice exam on timed wait

为什么第二个答案是正确的?抛出了什么异常,为什么?

P.S。谢谢解答!

现在我看到 t1.wait() 应在 synchronized(t1) 内 - 在 t1 上,用于调用 wait() 的同一实例。 this answer 也很有帮助。

这是 免费 测试取自 here

由于此代码调用 t1.wait 时未持有 t1 对象的锁 - IllegalMonitorStateException 将被抛出 - 如 Object::wait(time) 方法中所述。这是一个 RuntimeException,因此不必在方法签名中指定。 Bees::go 方法上的 synchronized 将确保调用此方法的线程将锁定 Bees 对象 - 而不是 t1 对象。