如何在Java中将异步代码转换为同步,而无需过多的样板

时间:2015-05-26 19:49:39

标签: java asynchronous sync future

我觉得发布这个问题真是太傻了,确定有一个明显的答案,但花了两个小时试图猜测如何做到这一点没有运气。可能社区会有所帮助。

我的问题: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

我看到期货被用作运行某个过程的对象,该过程返回结果(并且将来完成)。我的问题是我不想使用从另一个线程的范围访问的繁琐的变量。有没有像州的未来?或者这根本没有意义?

0 个答案:

没有答案
相关问题