Java 当循环不工作时?
这可能看起来很愚蠢,但我被困在这里了。 我的代码:Java 当循环不工作时?,java,multithreading,Java,Multithreading,这可能看起来很愚蠢,但我被困在这里了。 我的代码: String status = "INPROCESS" logger.info("Job status: 1. "+prevStatus); logger.info("Job status: 2. "+status); while (!status.equalsIgnoreCase("ERROR") && !status.equalsIgnoreCase("COMPLETE")) { Th
String status = "INPROCESS"
logger.info("Job status: 1. "+prevStatus);
logger.info("Job status: 2. "+status);
while (!status.equalsIgnoreCase("ERROR") && !status.equalsIgnoreCase("COMPLETE")) {
Thread.sleep(10000);
map = ConfigUtils.getJobStatus(jobDetailsBean, processTaskBean);
status = map.get("status");
logger.info("Job status: 3. "+status);
}
Job status: 1. IN_PROCESS
Job status: 2. IN_PROCESS
在我的屏幕上打印的内容是:
String status = "INPROCESS"
logger.info("Job status: 1. "+prevStatus);
logger.info("Job status: 2. "+status);
while (!status.equalsIgnoreCase("ERROR") && !status.equalsIgnoreCase("COMPLETE")) {
Thread.sleep(10000);
map = ConfigUtils.getJobStatus(jobDetailsBean, processTaskBean);
status = map.get("status");
logger.info("Job status: 3. "+status);
}
Job status: 1. IN_PROCESS
Job status: 2. IN_PROCESS
我的问题:
当值既不错误也不完整时,为什么它不进入循环中
此代码正在由另一个线程使用executor framework启动的线程上运行。
当前状态为“正在处理”
ConfigUtils.getJobStatus(jobDetailsBean, processTaskBean);
这将运行并更新作业的状态。现在,当线程运行时,它打印日志,然后完全跳过while循环,导致状态不更新。您要求的是“要么”的情况,在这种情况下,将| |(或)而不是&(和)
在您的情况下,它将检查这两种情况。您能否提供一个解决方案,以便我们尝试重现问题?(特别是,这些常数是什么?)这并不能解释为什么它不起作用——因为目前这两个条件都是正确的。状态不是错误,状态不是完整。。。假设这些常数有合理的值。如果OP将其更改为
|
,则循环将永远无法完成,除非错误
和完成
具有相同的值,因为状态可能是“不等于错误”或“不等于完成”。