Java从while条件调用同步函数

时间:2015-03-12 18:28:24

标签: java

请考虑以下代码段。

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");
        }
    }
}

困惑是 - 在条件下访问同步方法时RunThread的行为方式。它是否会获取类RunThread对象的锁定,然后打印' A'然后释放锁?或者它会创建一个临时变量来保存shouldContinue()的返回值,然后打印' A"?

提前致谢。

2 个答案:

答案 0 :(得分:1)

是的,它将获取并释放while循环的迭代锁,这可能不是你想要做的。

答案 1 :(得分:1)

锁定在执行shouldContinue()期间持续,因此它将锁定,解锁,打印A.锁定,解锁,打印A,一遍又一遍。