等待变量更改其值的最佳方法
Best way to wait until a variable changes its value
我意识到我要问的是一个更笼统的Java问题而不是一个特定的Codename One问题,无论如何,考虑到参考API是Codename One的,有没有更优雅和更处理类似以下代码的情况的可靠方法?如果我需要同步编写本质上与回调异步的代码,就会发生这种情况:
while (lock) {
CN.invokeAndBlock(() -> Util.sleep(500));
}
我在这里引用了这样的代码:https://github.com/codenameone/CodenameOne/issues/3192
JavaSE 有一些很酷的功能可以做到这一点,但我们目前不支持它们,例如CountDownLatch
.
但这仍然很容易做到:
public class SharedVar<T> {
private T var;
public T get() { return var; }
public synchronized void set(T var) {
this.var = var;
notifyAll();
}
public synchronized T waitForChange() {
wait();
return var;
}
}
我意识到我要问的是一个更笼统的Java问题而不是一个特定的Codename One问题,无论如何,考虑到参考API是Codename One的,有没有更优雅和更处理类似以下代码的情况的可靠方法?如果我需要同步编写本质上与回调异步的代码,就会发生这种情况:
while (lock) {
CN.invokeAndBlock(() -> Util.sleep(500));
}
我在这里引用了这样的代码:https://github.com/codenameone/CodenameOne/issues/3192
JavaSE 有一些很酷的功能可以做到这一点,但我们目前不支持它们,例如CountDownLatch
.
但这仍然很容易做到:
public class SharedVar<T> {
private T var;
public T get() { return var; }
public synchronized void set(T var) {
this.var = var;
notifyAll();
}
public synchronized T waitForChange() {
wait();
return var;
}
}