Java:空while循环
我正在制作一个以这种方式执行的while循环" title="while循环">while循环程序:
- 主线程进入while循环。
- 在while循环中什么也没有发生。
- 线程将停留在while循环中,直到满足条件为止。
- 另一个线程运行一个满足上述条件的函数。
这是一个例子:
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 onsynchronized (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