BlockingQueue でキューを待ち受ける

nbeppu 417views 更新:2014年9月24日

BlockingQueue のインターフェースを利用すると、新たなキューが追加されるまで待ち受けることができる仕組みを実装することができるようになります。

BlockingQueue<Message> messages =
      new LinkedBlockingQueue<Message>();

キューへの追加は以下の様に記述します。

    public synchronized void sendMessage(List<String> recipients, String message) {
      try {
        messages.put(new Message(recipients, message));
      } catch (InterruptedException e) {
        //
      }
    }

待ち受ける際は poll メソッドで待ち受けます。

    while (running) {
        try {
          Message message = messages.poll(1000, TimeUnit.SECONDS);
          if (message != null) {
            // 処理
          }
          try {
            Thread.sleep(100);
          } catch (Throwable ignore) {
            //
          }
        } catch (Throwable t) {
          log(t.getMessage(), t);
          //
        }
      }

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません