第10章 非同期 API
Red Hat JBoss Data Grid は同期 API メソッドの他に、非ブロッキング方式で同じ機能を実現する非同期 API も提供します。
非同期メソッドの命名規則は、同期メソッドの命名規則と似ていますが、各メソッド名に
Async
を追加します。非同期メソッドは、操作の結果が含まれる Future を返します。
たとえば、
Cache(String, String)
とパラメーター化されたキャッシュでは、Cache.put(String key, String value)
は String を返します。また、Cache.putAsync(String key, String value)
は Future(String)
を返します。
10.1. 非同期 API の利点
非同期 API はブロックしないため、以下のような複数の利点があります。
- 同期通信が保証される (エラーと例外を処理する機能が追加される)。
- 呼び出しが完了するまでスレッドの操作をブロックする必要がない。
これらの利点により、以下のようにシステムで並列処理を向上させることができます。
例10.1 非同期 API の使用
Set<Future<?>> futures = new HashSet<Future<?>>(); futures.add(cache.putAsync("key1", "value1")); futures.add(cache.putAsync("key2", "value2")); futures.add(cache.putAsync("key3", "value3"));
たとえば、以下の行は実行時にスレッドをブロックしません。
futures.add(cache.putAsync(key1, value1));
futures.add(cache.putAsync(key2, value2));
futures.add(cache.putAsync(key3, value3));
これら 3 つの put 操作からのリモートコールは同時に実行されます。これは、分散モードで実行する場合に特に役に立ちます。