我将 Play Framework 2.1.1 与一个生成 java.util.concurrent.Future 结果的外部 java 库一起使用。我使用的是 scala 未来而不是 Akka,我认为从 Play 2.1 开始这是正确的做法。如何将 java.util.concurrent.Future 包装到 scala.concurrent.Future 中,同时仍然保持代码非阻塞?
def geConnection() : Connection = {
// blocking with get
connectionPool.getConnectionAsync().get(30000, TimeUnit.MILLISECONDS)
}
上面的代码返回一个连接但使用了一个 get 所以它变成阻塞
def getConnectionFuture() : Future[Connection] = {
future {
// how to remove blocking get and return a scala future?
connectionPool.getConnectionAsync().get(30000, TimeUnit.MILLISECONDS)
}
}
理想情况下,我想要一个 scala 函数,它像上面的代码一样将连接作为未来返回,但没有通过 get 阻塞代码。我还需要在函数中添加什么以使其非阻塞。
任何指针都会很棒。