Java 对象锁和类级锁

Java 对象锁和类级锁,java,multithreading,Java,Multithreading,最近我参加了一次面试,他们向我提出了一个问题 “您决定在什么环境下使用对象锁/类级锁” 我的答覆是: 如果要在静态方法上应用同步概念,需要使用类级锁,否则应该使用对象锁 有更好的答案吗?你的答案只是简单地定义了什么是对象锁和类锁,而不是什么时候应该使用它们 使用对象级锁,可以确保不同的线程不会对同一对象实例造成不安全的情况 类级锁确保不同线程中的对象的不同实例无法访问可以是静态方法的不安全代码块。你可以看到更多细节另一个措词不当的面试问题在什么样的背景下"确实如此"。无意义。好的,我的答案正确吗

最近我参加了一次面试,他们向我提出了一个问题

“您决定在什么环境下使用对象锁/类级锁”

我的答覆是:

如果要在静态方法上应用同步概念,需要使用类级锁,否则应该使用对象锁


有更好的答案吗?

你的答案只是简单地定义了什么是对象锁和类锁,而不是什么时候应该使用它们

使用对象级锁,可以确保不同的线程不会对同一对象实例造成不安全的情况


类级锁确保不同线程中的对象的不同实例无法访问可以是静态方法的不安全代码块。你可以看到更多细节

另一个措词不当的面试问题在什么样的背景下"确实如此"。无意义。好的,我的答案正确吗?或者还有什么我应该添加的。@user2900314-另外,我不建议使用term方法,因为您可以在静态初始值设定项和实例级初始值设定项中进行同步。:)是的,我错过了那一点。谢谢你指出这一点。我会说:我发现“对象级锁”和“类级锁”是没有帮助的名称,它们掩盖了真正发生的事情。重要的问题是,需要保护的不变量是什么?保护它的锁在哪里?如果有一个全局不变量,那么应该有一个与之关联的全局锁对象。如果某个类的每个实例都有一个单独的不变量Foo,那么很明显锁应该是同一实例的一个组件。