我使用Play Framework 2.1.1與外部java庫產生java.util.concurrent.Future結果。我正在使用Scala未來版本,而不是Akka,我認爲這是Play 2.1的正確選擇。如何將java.util.concurrent.Future包裝到scala.concurrent.Future中,同時仍然保持代碼不被阻塞?scala.concurrent.Future封裝java.util.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。我還需要將其放入函數中以使其不被阻塞。
任何指針都會很棒。
您正在使用哪個斯卡拉的版本轉換?截至2.10.x,Scala採用了Akka的Future作爲自己的未來。 –
Play 2.1.1使用Scala 2.10.0下蓋 –