如果我正确理解了问题,则需要进行递归调度(因为它似乎不会从作业中发出任何值)。以下是如何使用RxJava执行此操作的示例 Scheduler.Worker :
Scheduler.Worker
public class RecurringJob { static Subscription runJob(Runnable run) { Scheduler.Worker w = Schedulers.newThread().createWorker(); MultipleAssignmentSubscription mas = new MultipleAssignmentSubscription(); Action0 action = new Action0() { @Override public void call() { try { run.run(); mas.set(w.schedule(this, 1, TimeUnit.SECONDS)); } catch (Throwable t) { t.printStackTrace(); w.unsubscribe(); } } }; mas.set(w.schedule(action, 1, TimeUnit.SECONDS)); return mas; } public static void main(String[] args) throws InterruptedException { Subscription s = runJob(() -> System.out.println("Job")); Thread.sleep(10000); s.unsubscribe(); System.out.println("Job stopped"); Thread.sleep(3000); System.out.println("Done."); } }