gpt4 book ai didi

java - 在 Java 中任务完成之前后台任务然后结束连接(8)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:22 26 4
gpt4 key购买 nike

我花了很多时间研究这个问题,并且有很多方法可以作为 Java 的背景(应该注意,我专门研究 Java 8 解决方案)。

好的,这是我的(一般)情况 - 请注意这是一个示例,所以不要花时间研究它的工作方式/它在做什么:

  • 有人通过 API 调用请求某些东西
  • API 从数据存储中检索一些数据
  • 但是,我想在某些缓存系统中缓存这个聚合响应
  • 我需要调用缓存 API(通过 REST)来缓存此响应
  • 我不想等到此调用完成后再将响应返回给原始 API 调用

一些模糊的代码结构:

@GET
@ // api definitions
public Response myAPIMethod(){
// get data from datastore
Object o = getData();

// submit request to cache data, without blocking
saveDataToCache();

// return the response to the Client
return Response.ok(data).build();
}

在后台运行 saveDataToCache 而无需等待返回 data 的“最佳”(最佳、最安全、标准)方法是什么?请注意,此缓存不应经常发生(可能每秒几次)。

我尝试了几种方法,特别是 CompletableFutures,但是当我输入一些日志记录时,它似乎总是在返回响应之前等待(我没有调用 get)。

基本上,来自客户端的连接可能会在缓存调用完成之前关闭 - 但我希望它已经完成 :) 我不确定规则是否与客户端连接的生命周期内的规则相同。

提前感谢您的任何建议,如果有任何不清楚的地方,请告诉我...我试图以一种对于那些不了解我正在尝试做的事情(我不能透露)的人可以理解的方式来定义它。

最佳答案

你可以考虑adding要缓存到 BlockingQueue 中的对象并有一个单独的线程 taking从队列中取出并存储到缓存中。

关于java - 在 Java 中任务完成之前后台任务然后结束连接(8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com