(1),问题主要在try{r.wait();}catch(InterruptedException e){}中的r.wait();当线程执行到r.wait()时,就会停在这里等待,在你用notify()唤醒它之前,线程不会去获取执行权,也就是说如果你不会唤醒它,它就会在那里不动的.所以最好是用sleep()方法,如sleep(1000);当线程睡了1秒之后,它自己会去获取执行权,在获取到执行权之后,就会执行下面的代码.
(2),可以用 类名.class 锁,就像你代码中那样用就可以了.
一个java文件(里面中只有一个类)通过编译后会产生一个 类名.class 文件,当运行这个程序时,JVM就会将class文件加载进内存中,在内存中就会产生一段二进制码对就这个class文件. 类名.class 代表的就是这段二进制码. 这个类的对象可以有多个,但是这个类在内存中所对就的二进制码是唯一的. 更具体的在学习反射时会接触到到, 也可以先看看java.lang包中的Class类. |