我有一个返回DeferredResults的休息网络服务。我从返回Future的执行服务中实现了JavaRx Observable。我希望这个Web服务是非阻塞的,但它似乎阻止了操作。
你认为我使用执行者服务的方式是健康的吗?
DeferredResult result = new DeferredResult();
Observable<ResultEntity> observable = Observable
.from(executerService.submit(callable));
observable.subscribe(new Subscriber<ResultEntity>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable throwable) {
result.setErrorResult(throwable.getMessage());
}
@Override
public void onNext(ResultEntity r) {
result.setResult(t);
}
});
答案 0 :(得分:1)
如果您有Callable
,则可以使用fromCallable
:
Observable.fromCallable(callable)
.subscribeOn(Schedulers.from(executorService))
.subscribe(...)
答案 1 :(得分:0)
Observable.from(Future)
是阻止操作,如文档中所述。您应该使用Observable.from(Future,Scheduler)
代替。