Java はラムダ式をサポートしていません。インライン コールバックの作成 (非同期呼び出しの完了など) には、匿名型のボイラープレートが 5 行必要です。
これは、人々がコールバックを使用することを強く思いとどまらせます。C# には2005 年以降Runnable
にあるのに対し、Java 7 には ( and とは対照的に) 値を取るコールバック用のインターフェースがまだないのはおそらくこれが理由です。Callbable
したがって、JDK には、非同期操作に対する実際のサポートはありません。
非同期操作の鍵は、長時間実行されるリクエストを開始し、リクエストの実行中にスレッドを消費することなく、終了時にコールバックを実行する機能です。Java ではget()
、Future<V>
. これにより、標準 API を使用するアプリケーションの同時実行性が、適切にサポートできるスレッド数に制限されます。
この問題を解決するために、Java コードを改善するための Google の Guava フレームワークは、完了コールバックを持つListenableFuture<V>
インターフェイスを導入しています。
Scala などの言語は、ラムダ式 (匿名クラスにコンパイルされる) をサポートし、独自のPromise / Future型を追加することで、この問題を解決します。