Java 非同期処理の同期をとる
java.util.concurrentパッケージにはJavaの同期・非同期処理を実装する上で便利なクラスある。
その中でも簡単に使えるのが CountDownLatch である。
□CountDownLatch
他スレッドでの操作完了を待機する同期支援クラス
CountDownLatchはON/OFF機能をもったLatch(ドア、掛け金)である。
ex) 待ち合せたい非同期処理の数Nの場合
// インスタンス生成
final CountDownLatch latch = new CountDownLatch(N);
// 待ち合せ実行(メインスレッドで実行しないこと)
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
CountDownLatchインスタンスを非同期処理のスレッドに渡す。
非同期処理側
ex)
latch.countDown();
【Notice】
latch.countDown()とlatch.await()を呼び出すスレッドとタイミングに注意すること。
latch.countDown()を呼び出すスレッドが起動したあと、latch.await()を呼び出す方が安全。
Google:
http://developer.android.com/intl/ja/reference/java/util/concurrent/CountDownLatch.html
Androidでも共通して使用できる。というか個人的にはAndroidでしか使っていない。
0 件のコメント:
コメントを投稿