かつのりの日記2

わんくまでは珍しいJavaを中心とした日記です

目次

Blog 利用状況

書庫

日記カテゴリ

いろいろリンク

BlockingQueue

BlockingQueueについて書かれています。。。

http://d.hatena.ne.jp/m-hiyama/20071214/1197598785

たまにはPipedInputStreamとPipedOutputStreamを思い出してあげてください・・・。

 

丁度非同期で追加処理を行った結果がループできるイテレータが欲しかったので、BlockingQueueで実装してみました。

http://herringroe.googlecode.com/svn/trunk/herringroe-sandbox/src/main/java/jp/herringroe/commons/util/AsyncIterable.java

ポイントとしては非同期追加処理の終了通知を割り込みで行っている部分です。BlockingQueueは終わりという考え方がないので、いつまでも待ち続けるんですね。そのために大元のスレッドが取得の為にブロッキングしている状態に対して割り込んでやる必要があるのです。

もちろん割り込まなければ実現できない問題ではありません。終了を示すオブジェクトを返してもよいです。サンプルコードを書くとこんな感じで使えます。

上記コードのTaskオブジェクトのprocessメソッドはAcyncIterableの中で別スレッドで動きます。結構便利ではないでしょうか。

投稿日時 : 2007年12月16日 2:57

Feedback

No comments posted yet.
タイトル
名前
Url
コメント