等待变量更改其值的最佳方法

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;
    }
}