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,一次又一次。

有详细解释吗?这就是语言规范!调用同步方法,抓取监视器,方法退出,监视器释放,句号!