我需要清除块级同步的一些要点。块级同步
假设以下的同步块是在一个类的方法相同的方法:
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