java循环内存和处理未完成的任务

时间:2015-03-07 20:49:27

标签: java loops memory

假设我有一个类似这样的方法:

public void doSomething() {
    doThingA();
    doThingB();
    doThingC();
    doSomething();
}

然后让我们将这些方法之一定义为:

public void doThingB() {
    if (x == 1) {
        startDifferentMethodLoop()
    }
}

让我们说startDiffernetMethodLoop()有像doThingE()这样的单独方法,当然也可以通过再次调用iteself来结束。

问题:如果doThingB()在x等于1时变为活动状态,那么java会将第一个循环中的优秀方法排队(特别是doThingCdoSomething并尝试完成它们一次一切都解决了?如果是这样,告诉Java的首选方法是,一旦X为真,并且调用了新循环,那么未完成的方法不需要排队?

或者Java是否忘记了原始方法,因为它们从未被调用过?

1 个答案:

答案 0 :(得分:1)

你可以让你的方法返回一个布尔值,意思是"已解决",就像这样:

// and similar for other methods
public boolean doThingB() {
    if (x == 1) {
        startDifferentMethodLoop();
        return true;
    } else {
        return false;
    }
}

public void doSomething() {
    if (doThingA()) return;
    if (doThingB()) return;
    if (doThingC()) return;
    doSomething();
}