Java同步静态方法:锁定对象或类

新手上路,请多包涵

Java文档说:

对同一对象的同步方法的两次调用不可能交错。

这对静态方法意味着什么?由于静态方法没有关联对象,synchronized 关键字是否会锁定类而不是对象?

原文由 jbu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 569
2 个回答

由于静态方法没有关联对象, synchronized 关键字是否会锁定类而不是对象?

是的。 :)

原文由 OscarRyz 发布,翻译遵循 CC BY-SA 3.0 许可协议

只是为了向 Oscar(简洁得令人愉快!)的回答添加一点细节,Java 语言规范的相关部分是 8.4.3.6,“同步方法”

同步方法在执行之前获取监视器( §17.1 )。对于类(静态)方法,使用与方法类的 Class 对象关联的监视器。对于实例方法,使用与此关联的监视器(调用该方法的对象)。

原文由 Cowan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题