加えて、ライブラリは明示的に応答を待つ必要のない、値の格納、更新や取得用の非同期メソッド群をサポートしています。
非同期メソッドは各操作の最初のメソッド呼び出しによって返される Future オブジェクトあるいはその適切な実装を利用します。メインプログラムのループが処理を継続できるように、Couchbase サーバとの通信はクライアントライブラリによってバックグラウンドで処理されます。返却された Future オブジェクトのステータスをチェックするメソッドを利用してオペレーションのステータスを取得することができます。例えば、キーの取得を同期ではなく、非同期で行う場合、このようになります:
GetFuture getOp = client.asyncGet("someKey");
これはサーバからの応答を持った Future
オブジェクトである GetFuture
を保持します。Future
オブジェクトクラスはここで定義されています。主要なメソッドは次のとおりです。
cancel()
操作がまだ完了していない場合、操作のキャンセルを試みます。
get()
操作が完了するまで待機します。非同期ではなく同期的に、操作によって返されたオブジェクトを取得します。
get(timeout, TimeUnit)
指定したタイムアウト
とその時間単位
にまでオブジェクトの取得を待ちます。
isDone()
操作が正常に完了しました。
次の例では、タイムアウトを指定して値の取得や操作をキャンセルします:
GetFuture getOp = client.asyncGet("someKey"); Object myObj; try { myObj = getOp.get(5, TimeUnit.SECONDS); } catch(TimeoutException e) { getOp.cancel(false); }
代わりに、get()
メソッドを利用して応答を待つことも出来ます。
Object myObj; myObj = getOp.get();