使用RxJava

时间:2016-10-13 10:22:26

标签: data-structures queue message-queue rx-java

我需要创建一个队列,当一个项目被添加到队列时,应该通知订阅者。我的大脑只有解决方案是使用while循环来轮询队列或使用peek队列来比较是否将新对象添加到队列中,如果找到新项目则使用onNext()将项目转发给订阅者。这将是一个无限循环,这就是我需要观察队列。

1 个答案:

答案 0 :(得分:0)

您可以对其中一个队列进行子类化,并让add / offer / etc ...方法调用您的Observable

public class SubscriberQueue<E> extends LinkedList<E> {

   private Observable<E> mObservable = PublishSubscriber.create();

   @Override
   public boolean add(E e) {
      if (super.add()) {
         mObservable.onNext(e);
      }
   }

   public Observable<E> getObservable() {return mObservable;}
}

// Test code
SubscriberQueue<Integer> myQueue = new SubscriberQueue<>();
myQueue.getObservable().subscribe(i -> System.out.println("Added: " + i));
myQueue.add(1);