@Test public void testListenableFutureBeforeAndAfterCompletion() throws Exception { final CountDownLatch latch = new CountDownLatch(2); try (AsyncHttpClient ahc = asyncHttpClient()) { final ListenableFuture<Response> future = ahc.prepareGet(getTargetUrl()).execute(); future.addListener(latch::countDown, Runnable::run); future.get(); future.addListener(latch::countDown, Runnable::run); } latch.await(10, TimeUnit.SECONDS); } }
@Test public void testListenableFuture() throws Exception { final AtomicInteger statusCode = new AtomicInteger(500); try (AsyncHttpClient ahc = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final ListenableFuture<Response> future = ahc.prepareGet(getTargetUrl()).execute(); future.addListener(() -> { try { statusCode.set(future.get().getStatusCode()); latch.countDown(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } }, Executors.newFixedThreadPool(1)); latch.await(10, TimeUnit.SECONDS); assertEquals(statusCode.get(), 200); } }
responseFuture.addListener(() -> { try { Response response = responseFuture.get();
@Test public void testListenableFutureAfterCompletion() throws Exception { final CountDownLatch latch = new CountDownLatch(1); try (AsyncHttpClient ahc = asyncHttpClient()) { final ListenableFuture<Response> future = ahc.prepareGet(getTargetUrl()).execute(); future.get(); future.addListener(latch::countDown, Runnable::run); } latch.await(10, TimeUnit.SECONDS); }
responseFuture.addListener(() -> { try { Response response = responseFuture.get();
responseFuture.addListener(() -> { try { Response response = responseFuture.get();