【发布时间】:2014-03-14 06:56:54
【问题描述】:
我有一个主线程,它将从不同的类调用下面的process 方法..
现在我想做的是,如果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;
}
有什么办法吗?
只有在checkValue 方法返回 true 时,我才想使用 i=2 进行循环迭代。所以简而言之,我需要继续调用 checkValue 方法,直到它每 2 分钟返回一次 true。
一旦它返回 true,我不会为 i=1 调用 checkValue 方法,但对于 i=2,我会再次做同样的事情。
【问题讨论】:
-
如果第三次返回true,你想睡觉吗?
-
Thread.sleep(2000);等于睡2秒,2分钟就是Thread.sleep(120000);
-
@Batty:不,我不想睡觉,如果它第三次返回真。
-
@Absurd-Mind:那是错误的......我很傻......
-
在这种情况下使用 break。
标签: java multithreading thread-safety sleep