原因如下:
因为你的Test类里面有2个成员o1,o2
new 一个 Test(false) 那么他就有自己的o1和o2,
new 一个 Test(true) 那么他也有自己的o1和o2,
这点很重要。如果不是静态的话,那么运行时,2线程各自调用自己的o1和o2成员。一个进if,一个进else.所以不会死锁。
所以关于你的问题,我发现毕老师在死锁那一节课中关于static的解释有误。他说前面加static是为了方便调用,不用在调用时再创建对象。我把static去掉。再创建对象的话也是不会死锁,所以static是必须的。 |