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

问题描述

我意识到我要问的是比特定的Codename One问题更通用的Java问题,无论如何,考虑到参考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;
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...