Java:空while循环

我正在制作一个以这种方式执行的while循环" title="while循环">while循环程序:

  1. 主线程进入while循环。
  2. 在while循环中什么也没有发生。
  3. 线程将停留在while循环中,直到满足条件为止。
  4. 另一个线程运行一个满足上述条件的函数。

这是一个例子:

while(path != null);

类中还有另一个函数会将路径设置为null,一旦发生这种情况,主线程应退出此循环。在另一个线程中调用另一个函数。

但是,即使将path设置为null,主线程也不会退出循环。有什么建议?

码:

try 

{

for (Node n:realpath)

{

Thread.sleep(100);

actor.walk(n);

}

Thread.sleep(100);

}

catch (InterruptedException ex)

{

Logger.getLogger(VNScreen.class.getName()).log(Level.SEVERE, null, ex);

}

realpath.clear();

path = null;

if(path == null)

System.out.println("NULLED PATH");

回答:

繁忙的等待非常昂贵。我会这样:

Object LOCK = new Object(); // just something to lock on

synchronized (LOCK) {

while (path != null) {

try { LOCK.wait(); }

catch (InterruptedException e) {

// treat interrupt as exit request

break;

}

}

}

然后,当您设置path为null时,只需调用

synchronized (LOCK) {

LOCK.notifyAll();

}

this如果两段代码都在同一个对象中,则可以进行同步。)

以上是 Java:空while循环 的全部内容, 来源链接: utcz.com/qa/423949.html

回到顶部