Java5で追加されたFutureクラスは、未完了かもしれない非同期処理の結果を保持するクラスですがget()メソッドがあって完了までブロックするだけという低機能なものです。.thenなんちゃら() みたいな、完了時のコールバックを与えるということができません。これは非常に不便。
完了時のコールバックを .then 系メソッドで与えられるようになったのはJava8で登場したCompletableFutureクラスです。
では、CompletableFutureのように完了時コールバックを差し込みたいのに手元に受け取ったのがFutureオブジェクトだった場合はどうすればいいでしょう?
こんな簡単なコードで変換できます。
Future<T> f = ...
CompletableFuture<T> cf = CompletableFuture.supplyAsync(f::get);