wait和notify、notifyAll方法都必须在同步代码块中使用,就是要用到使用synchronized关键字修饰的代码中,这些代码都要使用锁;
wait、notify和notifyAll方法在使用时都要判断锁,只有使用同一个锁的notify才能唤醒wait的线程;
普通方法的锁是this指针,即调用这个方法的对象;
静态方法的锁是该静态方法所在的类;
代码块的锁是任意的对象,即synchronized(Object obj);
由以上可以看出,锁可以是任意类型的对象,而wait等3个方法要使用任意类型的对象,他们就必须是超父类Object中的成员了,任意对象都默认继承Object,也就是任意对象中都有wait等方法了; |