Java 从 while 条件调用同步函数

标签 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 在 while 条件内访问同步方法时的行为方式。它会获取类 RunThread 对象上的锁,然后打印“A”,然后释放锁吗?或者它会创建一个临时变量来保存 shouldContinue() 的返回值,然后打印“A”?

提前致谢。

最佳答案

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

关于Java 从 while 条件调用同步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017571/

相关文章:

Java volley空json对象

java - Java从File中读取一定数量的元素

javax.crypto.IllegalBlockSizeException : Data must not be longer than 256 bytes when using java8 parallelStream()

java - ORA-01654 : unable to extend index

java - EL1008E : Property or field 'content' cannot be found on object of type 'java.util.ArrayList' - maybe not public or not valid?

java - 在 rest Controller 中的单个端点上组合文件上传和请求正文

java - Xamarin JAR 绑定(bind)未为 android.app.IntentService 的派生类创建绑定(bind)

java - GridBagLayout anchor

java - String.replaceAll()方法: how to make sure processed characters can never be replaced again

java - 谁能帮助我了解如何模拟流体?