对synchronized(this)的一些理解(9) while(i-- > 0) { System.out.println(Thread.currentThread().getName() + " : Inner.m4t2()=" + i); try { Thread.sleep(500); } catch(InterruptedException ie) { } } }
结果:
尽管线程t1与t2访问了同一个Inner对象中两个毫不相关的部分,但因为t1先获得了对Inner的对象锁,所以t2对Inner.m4t2()的访问也被阻塞,因为m4t2()是Inner中的一个同步方法。
t1 : Inner.m4t1()=4t1 : Inner.m4t1()=3t1 : Inner.m4t1()=2t1 : Inner.m4t1()=1t1 : Inner.m4t1()=0t2 : Inner.m4t2()=4t2 : Inner.m4t2()=3t2 : Inner.m4t2()=2t2 : Inner.m4t2()=1t2 : Inner.m4t2()=0