我异步执行三个任务
CompletableFuture<IStoryDetail> iStoryDetailCompletableFuture = CompletableFuture.supplyAsync(()->storyRepository.getStoryDetails(id));
CompletableFuture<List<Comment>> iCommentFuture = CompletableFuture.supplyAsync(() -> commentRepository.getComments(id));
CompletableFuture<List<Images>> iImageFuture = CompletableFuture.supplyAsync(() -> imageRepository.getImagesByStoryId(id));
在那之后,我加入了所有这些任务
CompletableFuture.allOf(iCommentFuture, iStoryDetailCompletableFuture, iImageFuture)
;
这似乎很好,但当我决定在Executor服务中运行Completable future时
@Autowired
ICommentRepository commentRepository;
ExecutorService executorService = Executors.newFixedThreadPool(4);
CompletableFuture<IStoryDetail> iStoryDetailCompletableFuture = CompletableFuture.supplyAsync(()->storyRepository.getStoryDetails(id),executorService);
CompletableFuture<List<Comment>> iCommentFuture = CompletableFuture.supplyAsync(() -> commentRepository.getComments(id),executorService);
CompletableFuture<List<Images>> iImageFuture = CompletableFuture.supplyAsync(() -> imageRepository.getImagesByStoryId(id),executorService);
iStoryDetailCompletableFuture.thenApply(story -> objectMap.putIfAbsent(story.getClass().getName(),story));
iCommentFuture.thenApply(comments -> objectMap.putIfAbsent(Comment.class.getName(),comments));
iImageFuture.thenApply(images -> objectMap.putIfAbsent(Images.class.getName(),images));
CompletableFuture.allOf(iCommentFuture, iStoryDetailCompletableFuture, iImageFuture).thenRun(() -> executorService.shutdown())
;
执行器服务似乎无法正确关闭,对控制器的进一步请求被阻止,我在这里错过了什么,感谢您的帮助
删除thenRun(()后-
shutdown()等待任何现有托管线程完成。如果您不关心它管理的线程是否已完成,请使用shutdownNow()。
我试图理解java中完整期货的非阻塞回调性质 有了上面的代码,我总是看到下面看到的输出 线程名称ForkJoinPool.common池工人-1 thenApply Thread name main thenApply Thread name main thenAcceptThread name main Thread name main 这个顺序似乎建议主线程等待所有Futures线程的执行。
我仍在努力理解如何使用ScheduledExecutorService。我想要一个ScheduledExecutorService/ScheduledThreadPoolExecutor,它调度多个任务,并允许它们运行固定的时间。一旦不再调度任务,我就要关闭ScheduledThreadPoolExecutor。我试图通过编写一些测试来理解这是如何工作的。我尝试的第一件事是: 这工作得很好,我得到
我有一个关于CompletableFuture方法的问题: JavaDoc的意思是: 返回一个新的完成阶段,当此阶段正常完成时,将使用此阶段的结果作为所提供函数的参数来执行该阶段。有关异常完成的规则,请参阅完成阶段文档。 穿线呢?这将在哪个线程中执行?如果未来由线程池来完成呢?
我在同一个jvm中运行Netty客户端和服务器并试图停止服务器时遇到问题。以下是我的代码来举例说明: 我已经用Netty 3.4.0测试过了。最终和3.4.4。最后,我不知道我做错了什么。 为什么在服务器关闭后,客户端仍然可以向服务器发送数据?
问题内容: 背景 我正在尝试将条纹付款集成到我的网站中。我需要使用我的专用条纹密钥创建一个条纹用户。我将此密钥存储在服务器上,并调用服务器方法来创建用户。也许还有另一种方法可以做到这一点? 我的尝试和结果 我一直在使用相同的客户端代码和不同的服务器代码。所有尝试都会立即在客户端的console.log(…)上给出undefined,但在服务器的console.log(…)上给出正确的响应: 我也尝
我以前有个可打电话的课 我曾经使用提交。如何更改为使用