gpt4 book ai didi

java - 如何在 Java 中开始长时间执行之前向调用者返回确认

转载 作者:行者123 更新时间:2023-12-02 02:33:46 25 4
gpt4 key购买 nike

我有一个向外部客户端公开的服务方法,如下所示:

public String service()
{
String track_id;

// Generate new track id for each call somehow
// let us put as 123 for simplicity
track_id = "123";

// Execution that may take 1 minute goes here ....

return track_id;
}

然后我有一个使用该服务的客户端,例如:

public void client()
{
// Method Call
String track_id = service();

// Other statements
//statement 1;
//statement 2;
//statement 3;
}

client() 唯一关心的是 service() 返回的轨道 ID。 client() 不关心 service() 中发生的长时间执行过程,这会延迟 client() 中的语句 1 到 3。

现在有什么方法可以让 service() 首先返回轨道 ID,然后运行其余的执行。听起来很疯狂,但是有没有办法改变 service() 方法来实现以下行为:

public String service()
{
String track_id;

// Generate new track id for each call somehow
// let us put as 123 for simplicity
track_id = "123";

return track_id;

// Execution that may take 1 minute goes here ....
}

注意:我不想在数据库中存储任何内容,然后以任何方式获取它,以便在 service() 中运行长时间执行。长执行应该在收到 client()

的调用时运行

最佳答案

您的代码将在容器管理的池的线程中执行。在您的方法完成之前,响应不会发送给客户端

您可以启动一个单独的线程来运行长任务,并让主线程最终返回轨道 ID

public String service() {
String track_id;

// Generate new track id for each call somehow
// let us put as 123 for simplicity
track_id = "123";

//Asynchronous thread
(new Thread() {
public void run() {
// Execution that may take 1 minute goes here ....
}
}).start();

return track_id;
}

关于java - 如何在 Java 中开始长时间执行之前向调用者返回确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708502/

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