我需要清除塊級同步的一些要點。塊級同步
假設以下的同步塊是在一個類的方法相同的方法:
class A{
some_method(){
//BLOCK1
synchronized(OBJ1){
shared code...
}
//BLOCK2
synchronized(OBJ1){
shared code...
}
//BLOCK3
synchronized(OBJ2){
shared code...
}
}
}
以下查詢:
1)這是正確的,如果一個線程進入由上OBJ1獲得鎖BLOCK1,那麼只要第一個線程在OBJ1上保持鎖定,其他線程就可以同時運行塊3,否則沒有其他線程可以進入塊2。
2)如果在完成block1之後進入block2,第一個線程是否需要再次獲得OBJ1的鎖定? 3)如果第一個線程在block2中調用一些代碼,從block1開始,那麼它將不得不釋放第一個block執行期間獲得的OBJ1上的鎖定,並再次獲取它,或者第一個block中獲得的同一個鎖定將會工作?
現在假定BLOCK1是在一類和blockk2的方法和圖3是在其它的類
4)相同的方法如點1保持爲同步真正是通過在一些獲得鎖發生第三類obj(OBJ1,OBJ2)?
是這個家庭作業? – mata
[Java教程:同步方法](http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html) – matthewnreid