如何调用方法,直到每隔x分钟返回true

时间:2014-02-14 18:58:01

标签: java multithreading thread-safety sleep

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

现在我想要做的是,如果i=1那么,我将调用checkValue方法,如果它返回false,那么我想睡两个小时分钟,然后再次调用checkValue方法,如果它仍然返回false,然后再次睡眠两分钟,然后再次尝试checkValue方法,但现在假设它返回{ {1}},然后我会去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; } 方法返回true时才转到i=2循环迭代。所以简而言之,我需要继续调用checkValue方法,直到它返回true每个2分钟。

一旦它返回true,我就不会为checkValue调用checkValue方法,但对于i=1,我会再次做同样的事情。

3 个答案:

答案 0 :(得分:2)

Thread.sleep(millis)暂停当前主题。

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

答案 1 :(得分:1)

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

}

答案 2 :(得分:0)

如果您不想继续循环,请使用中断

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