当前位置: 首页>>代码示例>>Java>>正文


Java CompletableFuture.whenComplete方法代码示例

本文整理汇总了Java中java.util.concurrent.CompletableFuture.whenComplete方法的典型用法代码示例。如果您正苦于以下问题:Java CompletableFuture.whenComplete方法的具体用法?Java CompletableFuture.whenComplete怎么用?Java CompletableFuture.whenComplete使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.util.concurrent.CompletableFuture的用法示例。


在下文中一共展示了CompletableFuture.whenComplete方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: sort

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
public static void sort(int[] array, int from, int to) {
    int size = to - from;
    if (size < cutoff) Arrays.sort(array, from, to);
    else {
        CompletableFuture<int[]> parsort1 = null; // TODO implement me
        CompletableFuture<int[]> parsort2 = null; // TODO implement me
        CompletableFuture<int[]> parsort = parsort1.
                thenCombine(parsort2, (xs1, xs2) -> {
                    int[] result = new int[xs1.length + xs2.length];
                    // TODO implement me
                    return result;
                });

        parsort.whenComplete((result, throwable) -> {}); // TODO implement me
        parsort.join();
    }
}
 
开发者ID:rchillyard,项目名称:INFO6205,代码行数:18,代码来源:ParSort.java

示例2: testPut

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
@Test
public void testPut() throws TimeoutException {
	final String content = "test file content";
	final String key = "submission";
	final Waiter waiter = new Waiter();

	when(environment.getProperty(eq(Constants.BUCKET_NAME_ENV_VARIABLE))).thenReturn(bucketName);

	CompletableFuture<String> result = underTest.store(
			key, new ByteArrayInputStream(content.getBytes()), content.getBytes().length);

	result.whenComplete((outcome, ex) -> {
		waiter.assertEquals(content, getObjectContent(key));
		waiter.resume();
	});

	waiter.await(5000);
}
 
开发者ID:CMSgov,项目名称:qpp-conversion-tool,代码行数:19,代码来源:StorageServiceImplIntegration.java

示例3: testFileUploadFailureException

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
@Test
public void testFileUploadFailureException() throws TimeoutException {
	when(environment.getProperty(Constants.NO_AUDIT_ENV_VARIABLE)).thenReturn(null);
	successfulEncodingPrep();
	problematic();
	final Waiter waiter = new Waiter();
	CompletableFuture<Void> future = underTest.success(report);

	future.whenComplete((nada, ex) -> {
		waiter.assertNull(metadata.getQppLocator());
		waiter.assertNull(metadata.getSubmissionLocator());
		waiter.assertTrue(ex.getCause() instanceof UncheckedInterruptedException);
		waiter.resume();
	});

	waiter.await(5000);
}
 
开发者ID:CMSgov,项目名称:qpp-conversion-tool,代码行数:18,代码来源:AuditServiceImplTest.java

示例4: success

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
/**
 * Audit a successful conversion.
 *
 * @param conversionReport report of the conversion
 * @return future
 */
@Override
public CompletableFuture<Void> success(Converter.ConversionReport conversionReport) {
	if (noAudit()) {
		return null;
	}

	API_LOG.info("Writing success audit information");

	Metadata metadata = initMetadata(conversionReport, Outcome.SUCCESS);

	Source qrdaSource = conversionReport.getQrdaSource();
	Source qppSource = conversionReport.getQppSource();

	CompletableFuture<Void> allWrites = CompletableFuture.allOf(
			storeContent(qrdaSource).thenAccept(metadata::setSubmissionLocator),
			storeContent(qppSource).thenAccept(metadata::setQppLocator));
	return allWrites.whenComplete((nada, thrown) -> persist(metadata, thrown));
}
 
开发者ID:CMSgov,项目名称:qpp-conversion-tool,代码行数:25,代码来源:AuditServiceImpl.java

示例5: expectIntentionalFailureOf

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
private void expectIntentionalFailureOf(CompletableFuture<Optional<TestProfile>> profileFuture) {
    profileFuture.whenComplete((p, t) -> {
        if (p != null) {
            executionContext.runOnContext(() -> {
                throw new RuntimeException("profile should be null");
            });
        } else {
            AsyncExceptionHandler.handleException(t, e -> {
                // Note implication of use of completeExceptionally
                if (e instanceof IntentionalException) {
                    executionContext.runOnContext(() -> {
                        throw (IntentionalException) e;
                    });
                }
                throw new RuntimeException(e);
            });
        }
    });
}
 
开发者ID:millross,项目名称:pac4j-async,代码行数:20,代码来源:AsyncBaseClientTest.java

示例6: failValidation

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
/**
 * Audit a failed submission validation.
 *
 * @param conversionReport report of the conversion
 * @return future
 */
@Override
public CompletableFuture<Void> failValidation(Converter.ConversionReport conversionReport) {
	if (noAudit()) {
		return null;
	}

	API_LOG.info("Writing audit information for a validation failure scenario");

	Source qrdaSource = conversionReport.getQrdaSource();
	Source qppSource = conversionReport.getQppSource();
	Source validationErrorSource = conversionReport.getValidationErrorsSource();
	Source rawValidationErrorSource = conversionReport.getRawValidationErrorsOrEmptySource();

	Metadata metadata = initMetadata(conversionReport, Outcome.VALIDATION_ERROR);
	CompletableFuture<Void> allWrites = CompletableFuture.allOf(
			storeContent(rawValidationErrorSource).thenAccept(metadata::setRawValidationErrorLocator),
			storeContent(validationErrorSource).thenAccept(metadata::setValidationErrorLocator),
			storeContent(qppSource).thenAccept(metadata::setQppLocator),
			storeContent(qrdaSource).thenAccept(metadata::setSubmissionLocator));
	return allWrites.whenComplete((nada, thrown) -> persist(metadata, thrown));
}
 
开发者ID:CMSgov,项目名称:qpp-conversion-tool,代码行数:28,代码来源:AuditServiceImpl.java

示例7: submit

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
/**
 * Submits a value-returning task for execution to this worker and returns the pending result of the job.
 *
 * @param <Result> the type of pending result
 * @param job the job to submit
 * @return the pending result of the job
 * @see Future
 * @see ExecutorService#submit(java.util.concurrent.Callable)
 */
public <Result extends Serializable> Future<Result> submit(final Job<Result> job){

    final UUID job_id = UUID.randomUUID();
    final FutureRemote<Result> future_remote = new FutureRemote<>(job_id, proxy);
    network.notifyJobSubmission(future_remote);

    final CompletableFuture<Void> job_submission = proxy.submit(job_id, job);
    job_submission.whenComplete((result, error) -> {
        
        if (job_submission.isCompletedExceptionally()) {
            LOGGER.debug("failed to submit job {} to {} due to {}", job_id, proxy, error);
            future_remote.completeExceptionally(error);
        }
    });

    return future_remote;
}
 
开发者ID:stacs-srg,项目名称:shabdiz,代码行数:27,代码来源:Worker.java

示例8: scheduleTimeout

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
private <T> void scheduleTimeout(CompletableFuture<T> result, long timeoutMillis) {
    pendingFutures.add(result);
    if (isServerStopping()) {
        pendingFutures.remove(result);
        return;
    }

    final ScheduledFuture<?> timeoutFuture;
    if (timeoutMillis > 0) {
        final EventLoop eventLoop = RequestContext.current().eventLoop();
        timeoutFuture = eventLoop.schedule(() -> result.completeExceptionally(CANCELLATION_EXCEPTION),
                                           timeoutMillis, TimeUnit.MILLISECONDS);
    } else {
        timeoutFuture = null;
    }

    result.whenComplete((revision, cause) -> {
        if (timeoutFuture != null) {
            timeoutFuture.cancel(true);
        }
        pendingFutures.remove(result);
    });
}
 
开发者ID:line,项目名称:centraldogma,代码行数:24,代码来源:WatchService.java

示例9: requestReply

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
private void requestReply() {
    try {
        attempted.incrementAndGet();
        CompletableFuture<Data> response =
                communicationService.<Data, Data>sendAndReceive(
                        data,
                        TEST_REQUEST_REPLY_TOPIC,
                        encoder,
                        decoder,
                        randomPeer());
        response.whenComplete((result, error) -> {
            if (Objects.equals(data, result)) {
                completed.incrementAndGet();
            }
            messageSendingExecutor.submit(this::requestReply);
        });
    } catch (Exception e) {
        log.info("requestReply()", e);
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:21,代码来源:MessagingPerfApp.java

示例10: testSendAsync

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
@Test
public void testSendAsync() {
    CountDownLatch latch1 = new CountDownLatch(1);
    CompletableFuture<Void> response = netty1.sendAsync(ep2, "test-subject", "hello world".getBytes());
    response.whenComplete((r, e) -> {
        assertNull(e);
        latch1.countDown();
    });
    Uninterruptibles.awaitUninterruptibly(latch1);

    CountDownLatch latch2 = new CountDownLatch(1);
    response = netty1.sendAsync(invalidEndPoint, "test-subject", "hello world".getBytes());
    response.whenComplete((r, e) -> {
        assertNotNull(e);
        latch2.countDown();
    });
    Uninterruptibles.awaitUninterruptibly(latch2);
}
 
开发者ID:shlee89,项目名称:athena,代码行数:19,代码来源:NettyMessagingManagerTest.java

示例11: handleActions

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
private void handleActions(
    Iterator<Action> nextActions,
    ChannelHandlerContext ctx,
    Frame frame,
    CompletableFuture<Void> doneFuture,
    QueryLog queryLog) {
  // If there are no more actions, complete the done future and return.
  if (!nextActions.hasNext()) {
    doneFuture.complete(null);
    notifyQueryListeners(queryLog, true);
    return;
  }

  CompletableFuture<Void> future = new CompletableFuture<>();
  Action action = nextActions.next();
  ActionHandler handler = new ActionHandler(action, ctx, frame, future);
  if (action.delayInMs() > 0) {
    timer.newTimeout(handler, action.delayInMs(), TimeUnit.MILLISECONDS);
  } else {
    // process immediately when delay is 0.
    handler.run(null);
  }

  // proceed to next action when complete
  future.whenComplete(
      (v, ex) -> {
        if (ex != null) {
          doneFuture.completeExceptionally(ex);
        } else {
          handleActions(nextActions, ctx, frame, doneFuture, queryLog);
        }
      });
}
 
开发者ID:datastax,项目名称:simulacron,代码行数:34,代码来源:BoundNode.java

示例12: applyAsyncExceptionHandlingTo

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
private void applyAsyncExceptionHandlingTo(CompletableFuture<Integer> future) {
    future.whenComplete((i, t) -> {
       if (i != null) {
           throw new RuntimeException("Future was supposed to fail");
       } else {
           AsyncExceptionHandler.handleException(t, e -> executionContext.runOnContext(() -> {
               if (e instanceof IntentionalException) {
                   throw ((IntentionalException) e);
               } else {
                   throw new RuntimeException(e);
               }
           }));
       }
    });
}
 
开发者ID:millross,项目名称:pac4j-async,代码行数:16,代码来源:AsyncExceptionHandlerTest.java

示例13: testAsyncExceptionalCompletion

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
@Test(timeout = 1000, expected = IntentionalException.class)
public void testAsyncExceptionalCompletion(final TestContext testContext) throws Throwable {

    final Context context = rule.vertx().getOrCreateContext();
    Async async = testContext.async();
    final int input = 1;

    final CompletableFuture<Integer> future = new CompletableFuture<>();
    rule.vertx().setTimer(500, i -> {
        future.completeExceptionally(new IntentionalException());
    });
    future.whenComplete((i, t) -> {
        if (i != null) {
            context.runOnContext(v -> {
                throw new RuntimeException("Future should not have completed successfully");
            });
        } else {
            context.runOnContext(v -> {
                if (t instanceof IntentionalException) {
                    // Note that the cast is not actually redundant - this will log as it hits the default
                    // exception handler, but will be expected by the test
                    throw (IntentionalException) t;
                }
                throw new RuntimeException(t);
            });
        }
    });

}
 
开发者ID:millross,项目名称:pac4j-async,代码行数:30,代码来源:AsynchronousComputationAdapterTest.java

示例14: handleUserResponse

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
private void handleUserResponse(final CompletableFuture<Object> future) {
  future.whenComplete((resp, exc) -> {
    if (exc != null) {
      LOG.error("Could not wake up user due to: {}", exc.getCause().getMessage());
    } else {
      LOG.info("User [{}] is waked up", ((UserActorWakeUpMessage.Request) resp).getUserId());
    }
  });
}
 
开发者ID:stefanstaniAIM,项目名称:IPPR2016,代码行数:10,代码来源:StartUpRunner.java

示例15: setMainResponse

import java.util.concurrent.CompletableFuture; //导入方法依赖的package包/类
synchronized void setMainResponse(CompletableFuture<HttpResponse<T>> r) {
    r.whenComplete((HttpResponse<T> response, Throwable t) -> {
        if (t != null)
            mainResponse.completeExceptionally(t);
        else
            mainResponse.complete(response);
    });
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:9,代码来源:PushGroup.java


注:本文中的java.util.concurrent.CompletableFuture.whenComplete方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。