首页 > TAG信息列表 > completable-future

java-如何处理CompletableFutures链中的错误响应?

我的项目中有很长的可完成期货链,每个步骤都调用一个后端API,该API可以给出多个错误响应和一个成功响应.现在,在解析响应之后,我需要判断是否是错误,然后需要向用户显示.我还需要知道链中的哪个阶段产生了此错误. 我现在的方法(如下所示)是每当遇到错误响应时抛出运行时异常,然后将

Java CompletableFuture.complete()块

在Java中使用CompletableFuture时遇到问题. 我有2个选择请求,这些请求从服务器收到响应时就会被填充. 在连接线程(THREAD-1)(使用电抗器)中,我使用: if(hasException) { selectFuture.completeExceptionally(new ClientException(errorCode)); } else { System.out.println("

春季休眠异步任务问题未找到当前线程的会话

这是我保存数据的方法.一切正常 public Future<SocialLogin> loginUserSocial(Social model) { Session session = this.sessionFactory.getCurrentSession(); session.save(model); SocialLogin dto = new SocialLogin(); dto.setUser_id(mo

java-如何执行CompletableFuture数组并组合其结果

我正在研究Java 8 CompletableFutures,并阅读(看到)我应该使用thenCompose而不是thenApply. 我已经将代码转换为使用thenCompose,但是感觉不正确. 这是我的控制代码… final CompletableFuture<List<String>> extractor = get(htmlPageSource); @SuppressWarnings("unchecked") fi

java-使用join()然后get()的CompletableFuture异常行为

我的直觉是以下代码是错误的.我相信,因为正在使用join(),所以在完成期货时抛出的任何异常都不会被检查.然后,当调用get()时,将没有检查到的异常,没有记录任何错误以及在故障期间难以诊断错误. List<CompletableFuture> list = ImmutableList.of(future1, future2); Comple

java-在没有多线程的情况下使用Future有什么意义?

我继承了一些代码,并且没有任何原始开发人员.该代码大量使用了CompletableFuture,这是我第一次使用它,因此我仍在努力将其包裹住.据我了解,(Completable)Future通常与某种多线程机制一起使用,这将使我们能够在执行耗时的任务时做其他事情,然后通过Future来简单地获取其结果.如在the

java-如何将CompletableFuture>转换为Stream>?

而已.真的找不到更接近的东西.我要实施以下任务链 List<Item> items = Collections.singletonList(new Item("John Smith", "1997-2014")); Stream<CompletableFuture<List<ScrappingResult>>> scrappingFutures = items.stream().map(item ->

java-如何在CompletableFuture中保留slf4j MDC日志记录上下文?

执行异步CompletableFuture时,父线程上下文以及org.slf4j.MDC上下文都会丢失. 这很不好,因为我使用某种“鱼标记”来跟踪多个日志文件中一个请求的日志. MDC.put(“ fishid”,randomId()) 问题:一般来说,在CompletableFutures的任务期间,如何保留该ID? List<CompletableFuture<Updat

用Java 8 CompletableFuture替换Futures.successfulAsList吗?

我正在寻找用Java 8的CompletableFuture代码替换Guava的Futures.successfulAsList()的规范代码. 我认为CompletableFuture.allOf()似乎是Futures.allAsList()的替代品,但是我看不到任何类似于successAsList()的东西.解决方法:实际上,CompletableFuture.allOf(…)比allAsList()更接

java-具有CompletableFuture的意外行为

我正在尝试使用异步CompletableFuture创建一个简单的示例,但是我看到了一些奇怪的行为.我的想法是,我启动2个异步期货,一个在设定的时间后激活一个布尔标志,另一个在线程1更改该标志后轮询该标志以释放该值.这是我的代码: package completablefutures; import java.util.concurren

java-嵌套的期货不执行

我遇到了一个奇怪的情况.我不喜欢CompletableFuture,并且在运行以下代码时出现意外结果: public static void main(String[] args) { CompletableFuture<CompletableFuture<CompletableFuture<CompletableFuture<CompletableFuture<CompletableFuture<Object>>>>>

java-如何杀死CompletableFuture相关线程?

我有检查CompletableFuture执行时间的方法.如果这样的CompletableFuture执行超过2秒钟,我想终止此任务.但是,如果我没有执行CompletableFuture方法的控制线程,该怎么办? final CompletableFuture<List<List<Student>>> responseFuture = new CompletableFuture<>(); respons

Java 8 CompletableFuture,Stream和Timeouts

我正在尝试使用CompletableFuture和Stream同时处理一些数据 到目前为止,我有: public static void main(String[] args) throws InterruptedException, ExecutionException { System.out.println("start"); List<String> collect = Stream.of("1", "2"

java – CompletableFuture allof(..).join()vs CompletableFuture.join()

我目前正在使用CompletableFuture supplyAsync()方法将一些任务提交到公共线程池.以下是代码段的样子: final List<CompletableFuture<List<Test>>> completableFutures = resolvers.stream() .map(resolver -> supplyAsync(() -> task.doWork())) .collect(toList

如何取消Java 8可完成的未来?

我正在玩Java 8可完成的期货.我有以下代码: CountDownLatch waitLatch = new CountDownLatch(1); CompletableFuture<?> future = CompletableFuture.runAsync(() -> { try { System.out.println("Wait"); waitLatch.await(); //cancel should inter

java – 为什么CompletableFuture.supplyAsync成功随机次数?

我是Java 8中lambda和异步代码的新手.我不断得到一些奇怪的结果…… 我有以下代码: import java.util.concurrent.CompletableFuture; public class Program { public static void main(String[] args) { for (int i = 0; i < 100; i++) { String test =

java – 如何将CompletableFuture.supplyAsync与PriorityBlockingQueue一起使用?

我正在尝试通过CompletableFuture.supplyAsync将优先级队列添加到使用ThreadPoolExecutor和LinkedBlockingQueue的现有应用程序.问题是我无法想出一个设计来分配任务优先级,然后我可以在PriorityBlockingQueue的Comparator中访问.这是因为我的任务被CompletableFuture包装到一个名

java – CompletableFuture获得第一个未来的结果,等待其他期货取决于第一个

我有以下要求. > CreateDocument >对于文档创建许多发行说明(releaseNotesFuture)>对于文档创建许多宗地(parcelsFuture)>返回1中创建的文档的objectId. 这是我目前的代码: public CompletableFuture<ObjectId> createDeliveryNoteDocument(String productId, List<String> release

java – 来自ExecutorService的CompletableFuture

我创建了一个自定义ExecutorService ExecutorService executor = new ThreadPoolExecutor(0, maxPoolSize, keepAliveTime, timeUnit, new LinkedBlockingDeque<>()); 我提交我的任务 Future<String> result = executor.submit(() -> "test"); 如你所见,执行者返

java – CompletableFuture没有被执行.如果我使用ExecutorService池按预期工作,但不使用默认的forkJoin公共池

我试图运行以下类,它终止而不执行CompletableFuture. public class ThenApplyExample { public static void main(String[] args) throws Exception { //ExecutorService es = Executors.newCachedThreadPool(); CompletableFuture<Student> studentCompletableFuture =

java – 在CompletableFuture中使用Supplier会产生与使用lambda不同的结果

我创建了一个读取文本文件并用CompletableFuture包装调用的小例子. public class Async { public static void main(String[] args) throws Exception { CompletableFuture<String> result = ReadFileUsingLambda(Paths.get("path/to/file")); result.whenCom

java – 测试可完成的未来总是通过

我有以下测试应始终失败: @Test public void testCompletable() { CompletableFuture.completedFuture(0) .thenAccept(a -> { org.junit.Assert.assertTrue(1==0); }); } 而这项测试总是成功的.如何才能使此测试失败?解决方法:您永远不会尝试检索

Java Future – Spring Authentication在AuditorAware中为null

这是我的情景: 我的应用程序启用了Mongo审核,使用自定义AuditorAware从SecurityContext获取当前用户.这适用于同步方法,并且成功保存了当前审计员,但我无法使用@Async方法使其正常工作. 我有一个异步方法(CompletableFuture),它在我的Mongo数据库上进行了一些更新.调用AuditorAware.

java – 从迭代器创建的CompletableFuture流不是懒惰评估的

我对如何以及何时完成可完成的期货感到苦苦挣扎.我创建了这个测试用例: import org.junit.Test; import java.util.Arrays; import java.util.Iterator; import java.util.Spliterator; import java.util.Spliterators; import java.util.concurrent.CompletableFuture; import ja

用于基本任务的Java 8 Concurrency最简单的规范形式

我有两个问题: 1.在Java 8中将Callable作为任务运行,捕获和处理结果的最简单的规范形式是什么?2.在下面的示例中,在所有任务完成之前,保持主进程打开的最佳/最简单/最清晰的方法是什么? 这是我到目前为止的例子 – 这是Java 8中最好的方法还是有更基本的东西? import java.util.*; imp