我有一个主线程,它将从另一个类调用下面的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
,我会再次做同样的事情。
答案 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();
}
}