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

Codenameone 等待变量更改其值的最佳方法,codenameone,Codenameone,我意识到我要问的更多的是一个通用的Java问题,而不是一个特定的代码名问题。无论如何,考虑到参考API是代码名问题,有没有一种更优雅、更可靠的方法来处理类似以下代码的情况?如果我需要同步生成本质上与回调异步的代码,就会出现这种情况: while (lock) { CN.invokeAndBlock(() -> Util.sleep(500)); } 我在这里引用了这样一段代码:JavaSE有一些非常酷的特性可以做到这一点,但我们目前不支持它们,例如CountDownLatch 但这

我意识到我要问的更多的是一个通用的Java问题,而不是一个特定的代码名问题。无论如何,考虑到参考API是代码名问题,有没有一种更优雅、更可靠的方法来处理类似以下代码的情况?如果我需要同步生成本质上与回调异步的代码,就会出现这种情况:

while (lock) {
   CN.invokeAndBlock(() -> Util.sleep(500));
}

我在这里引用了这样一段代码:

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;
    }
}
公共类SharedVar{
私人T-var;
public T get(){return var;}
公共同步无效集(T var){
this.var=var;
notifyAll();
}
公共同步的T waitForChange(){
等待();
收益var;
}
}

您能再补充一些解释吗?示例中的
notifyAll()
wait()
是什么?它们是
对象
类中的方法
wait()
停止同步上下文中的当前线程,并
notifyAll()
唤醒在给定锁上睡眠的所有等待线程。因为两者都使用相同的锁(
),所以它可以工作。