Java同步静态和非静态方法的行为

sun*_*007 1 java synchronize

根据我的理解,非静态方法的同步将在对象级别被阻止,并且静态方法上的同步将在类实例级别被阻止.

基于此,请在下面找到我对各种场景的理解:

  1. 非静态同步方法访问然后其他非静态同步方法也阻塞

  2. 非静态同步方法访问然后非静态非同步方法不阻塞.

  3. static synchrnize方法访问然后阻止该类实例的其他同步(静态和非静态)方法.

  4. 静态同步方法访问然后其他非静态非同步方法不会阻塞.

  5. 静态同步方法访问然后其他静态非同步方法不阻止.

  6. 静态同步方法访问然后阻止所有对象实例的非静态同步方法.

  7. 非静态synchrnize方法访问然后静态同步方法不阻塞

请帮我核实一下.

Evg*_*eev 6

我认为可以解释得更简单

1)当线程进入同步实例方法时,没有其他线程可以进入同一实例的任何同步实例方法

2)当一个线程进入同步静态方法时,没有其他线程可以进入同一个类的任何同步静态方法

  • +1 .....但如果一个类有`static`和非静态方法标记为`synchronized`那么`static`将不会与非静态方法同步,即两者都可以同时调用...是否正确? (2认同)