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();
}
而(iinti=1;
而(iinti=1;
而(iinti=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循环fori=2
,这是我不想要的。如果它返回true,那么我只想进入i=2
for循环。我只想在checkValue
方法返回true时才进入i=2
进行循环迭代。所以在s中霍特,我需要继续打电话给切赫