我觉得发布这个问题真是太傻了,确定有一个明显的答案,但花了两个小时试图猜测如何做到这一点没有运气。可能社区会有所帮助。
我的问题:Java中是否存在将异步代码转换为同步代码的标准机制。例如(来自,令人惊讶的是,实际代码),它在Scala中,但我关于Java的问题,将其视为伪代码(在Scala中它不会工作):
var finalWorld:WorldModel = null
LifeActors.run(world, new WorldModelListener {
override def worldUpdated(world: WorldModel) = {
finalWorld = world
}
}, 3) //3 iterations
val alive = finalWorld.getElements.filter(_.isAlive)
我希望有这样的东西:
val superFuture = LifeActors.run(world, new WorldModelListener {
override def worldUpdated(world: WorldModel) = {
setSuperFutureValue(world)
}
}, 3) //3 iterations
val alive = superFuture.getValue() //Blocks until is ready
我看到期货被用作运行某个过程的对象,该过程返回结果(并且将来完成)。我的问题是我不想使用从另一个线程的范围访问的繁琐的变量。有没有像州的未来?或者这根本没有意义?