我想更好地了解线程进入synchronized(this)
块与synchronized(someObjectReference)
块时实际发生的机制。
synchronized (this) {
// Statement 1
// Statement 2
}
synchronized (someObjectReference) {
// Statement 1
// Statement 2
}
据我了解:(我错过了什么吗?我错了吗?)
- 在这两种情况下,一次只有 1 个线程可以访问同步块
- 当我们同步时
someObjectReference
:- 一次只有 1 个线程可以在此块中访问/修改它
- 一次只能有 1 个线程进入该块
请问还有什么其他机制?
synchronized (objectReference) {
// Statement 1 dealing with someObjectReference
// Statement 2 not dealing with someObjectReference
}
mutex
在上面的示例中,将不处理的语句添加到同步块中是否有意义?