同步和静态同步

时间:2013-03-21 13:29:56

标签: java synchronized

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

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

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

e1通过获取对象级别锁定执行method1()时,e2将等待释放锁定{hmld e1

如果e1在类级别持有锁定时静态同步,则e2无法进入该块。

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

这两种情况有何不同?我没有看到静态和非静态同步方法访问之间存在任何差异。

1 个答案:

答案 0 :(得分:2)

在第一个示例中,同步在实例级别运行,因此如果同时调用e1.method1()e2.method1(),则允许它们并行运行。

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

相关问题