对象锁和类锁的区别

回答
爱扬教育

2022-01-08

  • 相关推荐
锁住类中的静态变量。因为静态变量和类信息一样也是存在方法区的并且整个 JVM 只有一份,所以加在静态变量上可以达到类锁的目的。
对象锁是当一个对象中有同步方法或者同步块,线程调用此对象进入该同步区域时,必须获得对象锁。

扩展资料

  类锁是一个class其中的静态方法和静态变量在内存中只会加载和初始化一份,所以,一旦一个静态的方法被申明为synchronized,此类的所有的实例化对象在调用该方法时,共用同一把锁,称之为类锁。

  类锁是加载类上的,而类信息是存在 JVM 方法区的,并且整个 JVM 只有一份,方法区又是所有线程共享的,所以类锁是所有线程共享的。