Когда я создаю Observable
с лямбдой для Runnable
, код будет выполнять метод run
по расписанию. Но если я создаю новый Runnable код не выполняется, что расписание ничего не происходит?
Код, который получает и использует Runnable
Observable<Usage> usageObservable = Observable.create(emitter -> {
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
executorService.scheduleAtFixedRate(createNewUsageListener(emitter), 0, 2, TimeUnit.SECONDS);
});
ConnectableObservable<Usage> connectableObservable = usageObservable.share().publish();
connectableObservable.connect();
Код, который работает и выполняется по расписанию ScheduledExecutorService
.
private Runnable createNewUsageListener(ObservableEmitter<Usage> emitter) {
return () -> {
List<Usage> usages = getUpdates(rollDice(0, 5));
if (usages != null) {
emitUsageStats(emitter, usages);
}
};
}
Этот код мне кажется тем же, но он не выполняется в ScheduledExecutorService
private Runnable createNewUsageListener(ObservableEmitter<Usage> emitter) {
return new Runnable() {
@Override
public void run() {
List<Usage> usages = getUpdates(rollDice(0, 5));
if (usages != null) {
emitUsageStats(emitter, usages);
}
}
};
}