同步方法和锁

时间:2011-11-18 12:30:58

标签: java

当线程调用synchronized方法时,它会自动获取该方法对象的内部锁,并在方法返回时释放它,但是当调用静态同步方法时会发生什么,因为静态方法与class不是一个对象?

3 个答案:

答案 0 :(得分:5)

一个类也是一个Object。在调用synchronized static方法时,您获取了Class对象的锁定。

答案 1 :(得分:3)

java中的每个类和接口都有一个关联的对象。

对于类名MyClass,您可以通过

获取类对象
MyClass.class

从任何对象obj,您都可以通过

获取类对象
obj.getClass()

当静态方法同步时,将获取此对象的锁定。

答案 2 :(得分:1)

只是为了清楚 - 这仍然意味着,例如,一个线程执行同步非静态方法,而另一个线程执行同步静态方法。你不能让两个线程同时执行2个同步的静态方法。