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

2022-08-31 07:37:22

Java文档说:

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

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


答案 1

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

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


答案 2

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

是的。:)


推荐