1、非静态方法同步
一个类中所有的非静态方法同步时采用同一把锁--类实例本身(即该类的对象)。该实例的一个非静态同步方法获取对象锁后,该实例的其他非静态同步方法要想获得锁,必须等获取锁的方法释放锁后才能获取。但是该类的其他实例的非静态同步方法要想获取锁,可不用等待,因为每个实例使用的是不同的锁。
2、静态方法同步
一个类中所有的静态方法同步时采用同一把锁--类本身。一旦一个静态同步方法获取到锁,其他静态同步方法必须等到锁释放后才能获取。此时,不管是哪个实例,它们都必须等待锁释放。
非静态方法同步锁与静态方法同步锁是两个不同的锁,所以两者之间没有竞争关系,互不影响。