首页 > 解决方案 > 静态如何影响同步方法?

问题描述

如果一个类有这两种方法:

公共静态同步无效 m1() {}

公共同步无效 m2() {}

两个线程可以同时执行这两个方法吗?

标签: java

解决方案


是的,两个线程可以同时执行这两个方法。静态方法在类上同步,另一个方法在对象本身上同步。

换句话说,静态方法等效于以下代码块:

synchronized(MyClass.class) {
...
}

whereMyClass是定义静态方法的类。请注意,它与this.getClass()非静态方法不同,因为它getClass()返回最派生的类。


推荐阅读