把这个地方的睡眠时间改长点就行了
System.out.println("aa");
Thread.sleep(100);
比如改成 Thread.sleep(500);
这样,第一个线程已经获得了o的锁,但是还未获得this的锁的时候,第二个线程会进来,得到this的锁。这时候两个线程就开始相互等待了。
原来的程序,第一个线程睡眠时间太短,第二个线程不容易插进去。
new Thread(th2).start(); 你启动两次干什么
new Thread(th2).start();
你把Object对象定义成static的,然后在Synchronize(o)块里让sleep的时间加长点比如10s,方便看到死锁状态