我需要等到给定的布尔值为真。该布尔值由侦听器更新。所有代码都在EDT内部,因此不适用以下内容:
while (!myBoolean) {
Util.sleep(100);
}
在给定的布尔值变为真之前,如何停止EDT内部的执行流(以正确的方式)?
答案 0 :(得分:1)
简单的答案是:
invokeAndBlock(() -> {
while (!myBoolean) {
Util.sleep(100);
}
});
更好的方法是:
timer = UITimer.schedule(100, true, () -> {
if(myBoolean) {
timer.cancel();
runThisMethod();
}
});
一个更复杂的问题是“为什么不添加监听器”?
由于布尔值已从侦听器更改,为什么不在触发它的侦听器之后添加侦听器并在那里进行工作?