Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当循环不工作时?_Java_Multithreading - Fatal编程技术网

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将其更改为
|
,则循环将永远无法完成,除非
错误
完成
具有相同的值,因为状态可能是“不等于错误”或“不等于完成”。