一尘不染

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

java

Java教程说:“不可能在同一对象上两次调用同步方法。”

这对于静态方法意味着什么?由于静态方法没有关联的对象,所以synced关键字会锁定在类而不是对象上吗?


阅读 524

收藏
2020-03-07

共2个答案

一尘不染

由于静态方法没有关联的对象, 所以synced关键字会锁定在类而不是对象上吗?

是。

2020-03-07
一尘不染

只是为Oscar的回答(很简洁!)添加了一些细节,Java语言规范中的相关部分是8.4.3.6,“同步方法”:

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

2020-03-07