首先就是本例main中一共两个线程,一个主线程一个子线程。子线程start()运行tt.run(){m1()}沉睡5秒。
此时主线程同时可以执行tt.m2();因为m1(),m2()互斥,所以m2()不能执行,主线程继续向下执行到System.out.println(tt.b);
tt.b已经被m1()修改成了1000所以先打印 1000
然后tt.m1()沉睡结束打印 b = 1000,
然后执行m2()中的吧= 2000;
如果main()最后加上Thread.sleep(5000+2500);System.out.println(tt.b);在打印就会使m2中给定的2000了。 |