【发布时间】:2016-05-16 14:23:31
【问题描述】:
Observable 是否缓存发射的项目?我有两个测试导致我得出不同的结论:
从测试 #1 我得出的结论是:
测试 #1:
Observable<Long> clock = Observable
.interval(1000, TimeUnit.MILLISECONDS)
.take(10)
.map(i -> i++);
//subscribefor the first time
clock.subscribe(i -> System.out.println("a: " + i));
//subscribe with 2.5 seconds delay
Executors.newScheduledThreadPool(1).schedule(
() -> clock.subscribe(i -> System.out.println(" b: " + i)),
2500,
TimeUnit.MILLISECONDS
);
输出 #1:
a: 0
a: 1
a: 2
b: 0
a: 3
b: 1
但是第二个测试表明我们得到了两个观察者的不同值:
测试 #2:
Observable<Integer> observable = Observable
.range(1, 1000000)
.sample(7, TimeUnit.MILLISECONDS);
observable.subscribe(i -> System.out.println("Subscriber #1:" + i));
observable.subscribe(i -> System.out.println("Subscriber #2:" + i));
输出 #2:
Subscriber #1:72745
Subscriber #1:196390
Subscriber #1:678171
Subscriber #2:336533
Subscriber #2:735521
【问题讨论】:
标签: java rx-java reactive-programming