类锁和对象锁,synchronized修饰static方法与非static方法的区别

 当synchronized修饰一个static方法时,多线程下,获取的是类锁(即Class本身,注意:不是实例),

       作用范围是整个静态方法,作用的对象是这个类的所有对象。

 当synchronized修饰一个非static方法时,多线程下,获取的是对象锁(即类的实例对象),

       作用范围是整个方法,作用对象          是调用该方法的对象

       结论: 类锁和对象锁不同,它们之间不会产生互斥

猜你喜欢

转载自www.cnblogs.com/alter888/p/9840402.html