我试图理解同步和静态同步方法之间的主要区别。
例如,考虑一个Employee
类有几个实例e1
,e2
。
synchronized method1() {
//--- blah blah---
}
当e1
通过获取对象级别锁定执行method1()
时,e2
将等待释放锁定{hmld e1
。
如果e1
在类级别持有锁定时静态同步,则e2
无法进入该块。
static synchronized method1() {
//--- blah blah---
}
这两种情况有何不同?我没有看到静态和非静态同步方法访问之间存在任何差异。
答案 0 :(得分:2)
在第一个示例中,同步在实例级别运行,因此如果同时调用e1.method1()
和e2.method1()
,则允许它们并行运行。
在第二个示例中,同步是在类级别操作的,因此如果同时调用e1.method1()
和e2.method1()
,它们将不会并行运行。