我的代码使用了RxJava中的Observable来观察C驱动器中的变化,
File file = new File("C:\");
Observable
.interval(1, TimeUnit.SECONDS)
.concatMapIterable(x -> files(file))
.distinct()
.toBlocking()
.subscribe(System.out::println);
代码打印例如new folder.
现在我想让它在Spring-Boot应用程序运行时一直运行。现在,当我在@Test方法中运行它时,它工作了。我知道我可以通过java或调度来实现但我想这样做
toBlocking操作符用于阻塞观察者,直到所有项都被发出,但在你的例子中,你是订阅的,所以可能你已经在等待所有项都被发出了。
你仍然可以使用这种方式,但是因为你使用的是异步执行管道的interval,你可能希望在主线程中获得结果,所以你可以使用observerOn操作符
Scheduler scheduler;//Main thread
Observable
.interval(1, TimeUnit.SECONDS)
.concatMapIterable(x -> files(file))
.distinct()
.observerOn(scheduler)
.subscribe(System.out::println);
您可以在这里看到一些异步示例https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/scheduler/ObservableAsynchronous.java