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