synchronized给对象加锁时的分析
-
对于synchronized,一个类里面的方法加上了synchronized时,当访问对象里面的同步方法时先进来的方法会对该资源加上锁,俗称对象锁,只锁加了synchronized的方法,普通方法不受影响!
-
对于静态同步方法static synchronized,是对整个Class加上锁,即使是不同的对象访问也不行!普通方法不受影响,俗称全局锁!
-
需要注意的是,如果说一个是一个静态同步方法,一个是非静态同步方法,那他们两者之间并没有相互的竞争关系,所用的锁并不是同一把锁!
具体实现过程分析可以参见尚硅谷周阳老师的 八锁理论