![]() |
1
1
等待引用或该引用指向的对象是相同的,因为在对象上获得了锁。无论有多少引用,如果它们指向内存中的同一对象wait()、notify(),notifyall()都将无缝工作。查看下面的代码。
注释下面的行,您将看到使用者线程正在等待通知。
|
![]() |
2
2
synchronized方法计算给定给synchronized块的表达式,以确定要获取什么锁。然后,需要对同一对象调用wait、notify等,但是否使用同一变量无关紧要。代码计算表达式以获取对象。 现在,thread1是否等待、通知和唤醒取决于比赛条件的结果。如果thread1在thread2调用notify之前进入wait方法,则thread2将等待,然后在thread2通知后唤醒。如果在thread1进入wait方法之前thread2调用notify,则thread1将永远等待。 |