java synchronized的问题
1个回答

一个类中所有的synchronized实例方法共享一个对象锁,当一个线程调用setX,另一个线程调用setY时,这时首先调用的那个线程享有对象锁,其他线程无法调用该对象的其他synchronized方法。当一个线程调用了setX后,在另一个线程可以调用setY方法前调用check,就return true. 对于setXY方法(),在首先调用此方法的线程从该方法退出前,其他任何线程可以进入该方法,但无法调用里面的方法,也无法调用check,因为该线程有唯一的对象锁,所以一旦调用了这个方法,x = y.至于D那就更不对了,x和y一上来初始值不同,check就可以是true了。