gpt4 book ai didi

java - 如何在异步线程中执行后台计算(在 REST Web 服务中)

转载 作者:行者123 更新时间:2023-11-30 06:53:25 25 4
gpt4 key购买 nike

我有一个 REST Web 服务,可以满足 HTTP 请求。从数据库获取数据后,我想运行后台线程并开始分析数据,这需要一些额外的时间才能完成。这些数据与响应无关,我们只是记录计算分析。

我根据自己对线程概念的理解尝试了以下方法。但在这两种情况下,HTTP 响应都是在后台计算完成后返回的,所以基本上计算线程和原始线程不是异步的,计算线程正在停止响应线程,直到分析完成。

  1. 启动了守护线程。我希望守护线程在 HTTP 方法发送响应的同时在后台运行。但是,事实并非如此。仅当该线程中计算完成后才会显示响应。即使父线程退出,守护线程也不应该在后台运行吗? (请阅读 james 的评论,了解启动守护进程可能会出现问题)

    Callable<Boolean> computeCallable = new CallableComputeProcess();<br/>
    Thread t=new Thread(computeCallable);<br/>
    t.setDaemon(true);<br/>
    t.start();

P.S:计算线程是我在父线程中创建的子线程。

有没有办法异步启动线程,让后台计算在后台运行而不停止 http 响应?

最佳答案

为了获得更大的灵 active ,请尝试 rxJava:

Flowable.fromCallable(() -> {
Thread.sleep(1000); // imitate expensive computation
return "Done";
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(System.out::println, Throwable::printStackTrace);

https://github.com/ReactiveX/RxJava

关于java - 如何在异步线程中执行后台计算(在 REST Web 服务中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42280197/

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