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. Что еще мне нужно добавить в функцию, чтобы она не блокировалась.

Любые указатели были бы великолепны.

Ответы на вопрос(4)

Ваш ответ на вопрос