为事件循环创建一个observable

时间:2016-03-07 10:04:13

标签: java multithreading rx-java

我最近一直在阅读关于rx-java的一些内容。我想知道框架是否适合线程之间的通信系统的账单。我正在使用java编写的REST服务器。每次某些资源是PUT / POST时,我想使用工作线程池进行一些计算。但是,我仍然希望能够监控请求,也许打印出一些统计信息。基本上我想要一个Observable,所以我可以灵活地处理多个Observer的请求。

我的问题是,如何创建合适的Observable?我见过的大多数指南都涉及对Observables的操作,例如映射等.Obervables主要是从集合或整数范围创建的。在任何情况下,似乎都不可能将新值推送到创建的Observables。显然,保持这种灵活性的唯一方法是使用Observable.create。然而,这似乎是相当低级的。我必须为每个新订阅者实现一个队列列表,并对每个订阅者执行synchronized推送。这是真的有必要还是已经在rx-java中实现了?

1 个答案:

答案 0 :(得分:5)

您要找的是Subject。它们既是观察者又是观察者。例如,ReplaySubject将重播向其发送给所有订阅者的所有事件。

Subject<String> replaySubject = ReplaySubject.create();
replaySubject.subscribe(s -> System.out.println(s));

// elsewhere...

replaySubject.onNext("First");
replaySubject.onNext("Second");
replaySubject.onComplete();