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
上記の例では、同期されたブロックに処理しないステートメントを追加することは意味がありますか?