0
アジェンダ:私はhttpレスポンスasynchronously
を取得したいが、その後同期的な方法で作業したい。 私はJersey
クライアントとjersey-rx-client-java8
を使用します。 それは私のコードです:私は別のコードを持っているrx形式のJerseyクライアントを使って作業する
ExecutorService executorService = Executors.newSingleThreadExecutor();
RxClient<RxCompletionStageInvoker> client = Rx.newClient(RxCompletionStageInvoker.class, executorService);
Stream<String> urls_stream = Stream.of("stackoverflow.com", "stackoverflow.com");
urls_stream.map(url -> {
return client
.target(url)
.request()
.rx()
.get()
.whenComplete((response, throwable) -> {
// this should be executed by 1 thread
out.println(response.readEntity(String.class));
if (null != throwable) throwable.printStackTrace();
})
.toCompletableFuture();
})
// Wait completion
.collect(Collectors.toList()).forEach(list -> {
CompletableFuture.allOf(list).join();
});
、この例では、より高速まず動作します。
最初の例がより速く動作することをアーカイブしたいと思います(ただし、プール内のスレッドを増やしたくありません)。
達成したいことは明確ではありません。期待していることをさらに説明してください。 –