Java从while条件调用同步函数
考虑下面的代码片段Java从while条件调用同步函数,java,Java,考虑下面的代码片段 public Class RunThread extends Thread{ private boolean shouldContinueFlag; public synchronized boolean shouldContinue(){ return shouldContinueFlag; } public void run(){ while(shouldContinue()){
public Class RunThread extends Thread{
private boolean shouldContinueFlag;
public synchronized boolean shouldContinue(){
return shouldContinueFlag;
}
public void run(){
while(shouldContinue()){
//do stuff;
System.out.println("A");
}
}
}
public Class AccessThread {
// Somehow this class got RunThread Object and running in different thread context than RunThread.
public void AcessFunction(RunThread runThrObj){
if(runThrObj.shouldContinue()){
//Do other stuff
System.out.println("B");
}
}
}
混淆之处在于-当访问while条件中的同步方法时,RunThread将如何运行。它会在类RunThread对象上获取锁,然后打印“A”,然后释放锁吗?或者它将创建一个临时变量来保存shouldContinue()的返回值,然后打印“a”
提前感谢。是的,它将获取并释放while循环迭代的锁,这可能不是您想要做的。该锁在shouldContinue()的执行期间持续,所以它会锁定、解锁、打印A。锁定、解锁、打印A,一次又一次。有详细解释吗?这就是语言规范!调用同步方法,抓取监视器,方法退出,监视器释放,句号!