2

我试图了解同步和静态同步方法之间的主要区别。

例如考虑一个Employee有几个实例的类e1e2.

synchronized method1() {
    //--- blah blah---
}

当通过获取对象级锁e1执行时,将等待由 hwld 释放的锁。method1()e2e1

在静态同步的情况下,e1在类级别持有锁时,e2也无法进入该块。

static synchronized method1() {
    //--- blah blah---
}

这两种情况有什么不同?我看不出静态和非静态同步方法访问有什么区别。

4

1 回答 1

2

在您的第一个示例中,同步是在实例级别操作的,因此如果您同时调用e1.method1()e2.method1(),它们可以并行运行。

在您的第二个示例中,同步是在类级别操作的,因此如果您同时调用e1.method1()e2.method1(),它们将不会并行运行。

于 2013-03-21T17:45:11.823 回答