scala.concurrent.Future обертка для java.util.concurrent.Future
Я использую Play Framework 2.1.1 с внешней библиотекой Java, которая дает результат java.util.concurrent.Future. Я использую будущее 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. Что еще мне нужно добавить в функцию, чтобы она не блокировалась.
Любые указатели были бы великолепны.