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