可从 Executorservice 观察到 Java 的休息服务
Rest Service with Java Observable from Executer Service
我有一个休息网络服务 returns DeferredResults。我从 returns 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);
}
});
Observable.from(Future)
是阻塞操作,如文档中所述。您应该改用 Observable.from(Future,Scheduler)
。
如果你有 Callable
,你可以使用 fromCallable
:
Observable.fromCallable(callable)
.subscribeOn(Schedulers.from(executorService))
.subscribe(...)
我有一个休息网络服务 returns DeferredResults。我从 returns 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);
}
});
Observable.from(Future)
是阻塞操作,如文档中所述。您应该改用 Observable.from(Future,Scheduler)
。
如果你有 Callable
,你可以使用 fromCallable
:
Observable.fromCallable(callable)
.subscribeOn(Schedulers.from(executorService))
.subscribe(...)