Java 如何调用一个方法,直到它每x分钟返回true

Java 如何调用一个方法,直到它每x分钟返回true,java,multithreading,thread-safety,sleep,Java,Multithreading,Thread Safety,Sleep,我有一个主线程,它将从另一个类调用下面的进程方法 现在我想做的是,如果I=1,那么我将调用checkValue方法,如果它返回false,那么我想睡两分钟,然后再次调用checkValue方法,如果它仍然返回false,那么再睡两分钟,然后再次尝试checkValue方法,但现在假设如果它返回true,那么我将进行I=2迭代,否则不会 public void process(String workflowName) { ..// some other code here fo

我有一个主线程,它将从另一个类调用下面的
进程
方法

现在我想做的是,如果
I=1
,那么我将调用
checkValue
方法,如果它返回
false
,那么我想睡两分钟,然后再次调用
checkValue
方法,如果它仍然返回
false
,那么再睡两分钟,然后再次尝试
checkValue
方法,但现在假设如果它返回
true
,那么我将进行
I=2
迭代,否则不会

public void process(String workflowName) {

    ..// some other code here

    for (int i = 1; i <= 10; i++) {
        try {
            .. // some other code here

            if (!checkValue()) {
                Thread.sleep(120000);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


private boolean checkValue() throws Exception {
    boolean check_nodes = false;
    return check_nodes;
}
公共作废流程(字符串workflowName){
..//这里还有其他代码吗
for(int i=1;i
线程。睡眠(毫秒)
挂起当前线程。

因此,您必须在主线程中调用
Thread.sleep(2*60*1000)
,以睡眠两分钟。

Thread.sleep(毫秒)
挂起当前线程。

int i = 1;
while ( i <=10 ){
    try{
         if(!checkValue()){
             Thread.sleep(120000);
         } else{
                i++;
         }
    } catch (Exception e) {
         e.printStackTrace();
    }
因此,您必须在主线程中调用
Thread.sleep(2*60*1000)
,以睡眠两分钟。

Thread.sleep(毫秒)
挂起当前线程。

int i = 1;
while ( i <=10 ){
    try{
         if(!checkValue()){
             Thread.sleep(120000);
         } else{
                i++;
         }
    } catch (Exception e) {
         e.printStackTrace();
    }
因此,您必须在主线程中调用
Thread.sleep(2*60*1000)
,以睡眠两分钟。

Thread.sleep(毫秒)
挂起当前线程。

int i = 1;
while ( i <=10 ){
    try{
         if(!checkValue()){
             Thread.sleep(120000);
         } else{
                i++;
         }
    } catch (Exception e) {
         e.printStackTrace();
    }
因此,您必须在主线程中调用
Thread.sleep(2*60*1000)
,以睡眠两分钟。

inti=1;
int i = 1;
while ( i <=10 ){
    try{
         if(!checkValue()){
             Thread.sleep(120000);
         } else{
                i++;
         }
    } catch (Exception e) {
         e.printStackTrace();
    }
而(i
inti=1;
而(i
inti=1;
而(i
inti=1;

while(i如果不想继续循环,请使用break

for (int i = 1; i <= 10; i++) {
    try {
        .. // some other code here

        if (!checkValue()) {
            Thread.sleep(2000 * 60);
        }
        else {
            break;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

for(int i=1;i如果不想继续循环,请使用break

for (int i = 1; i <= 10; i++) {
    try {
        .. // some other code here

        if (!checkValue()) {
            Thread.sleep(2000 * 60);
        }
        else {
            break;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

for(int i=1;i如果不想继续循环,请使用break

for (int i = 1; i <= 10; i++) {
    try {
        .. // some other code here

        if (!checkValue()) {
            Thread.sleep(2000 * 60);
        }
        else {
            break;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

for(int i=1;i如果不想继续循环,请使用break

for (int i = 1; i <= 10; i++) {
    try {
        .. // some other code here

        if (!checkValue()) {
            Thread.sleep(2000 * 60);
        }
        else {
            break;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}



for(int i=1;i如果第三次返回true,您想睡觉吗?Thread.sleep(2000);等于睡眠2秒,2分钟就是Thread.sleep(120000)@Batty:不,如果第三次返回为真,那么我就不想睡觉。荒谬的头脑:那是错误的。愚蠢的我。在这种情况下使用break。如果第三次返回为真,你想睡觉吗?Thread.sleep(2000);等于睡2秒,2分钟就是Thread.sleep(120000)@Batty:不,如果第三次返回为真,那么我就不想睡觉。荒谬的头脑:那是错误的。愚蠢的我。在这种情况下使用break。如果第三次返回为真,你想睡觉吗?Thread.sleep(2000);等于睡2秒,2分钟就是Thread.sleep(120000)@Batty:不,如果第三次返回为真,那么我就不想睡觉。荒谬的头脑:那是错误的。愚蠢的我。在这种情况下使用break。如果第三次返回为真,你想睡觉吗?Thread.sleep(2000);等于睡2秒,2分钟就是Thread.sleep(120000)@Batty:不,如果它第三次返回真的话,我就不想睡觉了。@荒谬的头脑:那是个错误..愚蠢的我..在这种情况下使用break。谢谢Alex。是的,那是个错误。复制粘贴错误。我原来的问题呢?如果返回假,我怎么每隔几分钟调用checkValue方法。在我的问题中,我只是不想睡觉……我只想在<代码> >校验值< /C> >方法返回真时,选择< <代码> i=2 < /COD>循环。真的,我需要继续调用<代码>校验值< /代码>方法,直到它每2分钟返回一个真值。考虑在介绍编程框图时阅读“while循环”一章。(!isResultReceived&&i<2){isResultReceived=check();Thread.sleep(2*60*120);i++}谢谢Alex。是的,那是错误的。复制粘贴错误。我的原始问题呢?如果返回false,我如何每隔几分钟调用checkValue方法。在我的问题中,我只是不想睡觉。我想在
checkValue
方法返回true时,才进行循环迭代。。所以简而言之,我不需要o继续调用<代码>校验值< /代码>方法,直到它每2分钟返回真值。考虑在编程语言的介绍中阅读“while循环”一章:当(.ISRESultRead and & i<2){ISRESUTPARCESS= CHECK();线程睡眠(2×60×120);I++}谢谢Alex。是的,那是错误的。复制粘贴错误。我的原始问题呢?如果返回false,我如何每隔几分钟调用checkValue方法。在我的问题中,我只是不想睡觉。我想在
checkValue
方法返回true时,才进行循环迭代。。所以简而言之,我不需要o继续调用<代码>校验值< /代码>方法,直到它每2分钟返回真值。考虑在编程语言的介绍中阅读“while循环”一章:当(.ISRESultRead and & i<2){ISRESUTPARCESS= CHECK();线程睡眠(2×60×120);I++}谢谢Alex。是的,那是错误的。复制粘贴错误。我的原始问题呢?如果返回false,我如何每隔几分钟调用checkValue方法。在我的问题中,我只是不想睡觉。我想在
checkValue
方法返回true时,才进行循环迭代。。所以简而言之,我不需要o继续调用<代码>校验值< /代码>方法,直到它每2分钟返回真值。考虑在编程语言的介绍中阅读“while循环”一章:当(.ISRESultRead and & i<2){ISRESUTPARCESS= CHECK();线程睡眠(2×60×120);I++}这将如何工作呢?在这里发生的事情是,在睡眠两分钟后,它返回到for循环for
i=2
,这是我不想要的。如果它返回true,那么我只想进入
i=2
for循环。我只想在
checkValue
方法返回true时才进入
i=2
进行循环迭代。所以在s中霍特,我需要继续打电话给切赫