gpt4 book ai didi

java - 同时运行两个任务并更改一个变量

转载 作者:行者123 更新时间:2023-12-01 13:08:19 25 4
gpt4 key购买 nike

我的问题与此问题相关here 。我基本上想同时执行两项任务:

  1. 从 Feed 中收集数据并将其添加到对象列表中
  2. 阅读对象列表,将其添加到数据库并删除添加到数据库的内容从对象列表中

因此,我正在更改这两个单独任务中的对象列表,但我不确定如何共享它并使其可通过同时运行的两个任务进行更改。我想在两个不同的任务中执行此操作的原因是因为来自 feed 的数据通常每 5 秒给出一次,这使我没有足够的时间来处理它并将其添加到数据库中。

希望有人能帮忙。谢谢。

----编辑

我发现了另一个问题,它似乎可以从here给我我需要的东西。 。所以现在我有这样的代码:

class MainThread {
private void MainThread() {
while(true)
{
//get json data

List<Object> obj = //json data to list of object;

SecondThread second = new SecondThread(obj);
second.start();
}

}
}

class SecondThread extends Thread {
List<Object> obj;

public void SecondThread(List<Object> obj) {
this.obj = obj;
}
public void run() {

//add list to db

}
}

我想知道的是,MainThread 中的 while 循环是否会等待 SecondThread 完成处理/将数据放入数据库,然后再开始另一个循环?

最佳答案

既然您似乎为第一组问题找到了一些东西,我将回答您的最后一个问题:

What I am wondering is if the while loop in the MainThread waits for the SecondThread to finish processing/putting the data in the db before it starts another loop?

在您的示例中,MainThread 永远不会等待 SecondThread 完成,它将不断执行其 while 循环。在您的代码中,您在 while 循环内创建 SecondThread ,这将在您的应用程序崩溃之前创建大量线程。如果您想在执行其他操作之前等待线程完成,那么您可以这样做:

SecondThread second = new SecondThread(obj);
second.start();
second.join(); //will make current thread wait until this thread finishes before proceeding

请注意,在您的情况下,线程连接本质上只会使您的代码顺序化,因为 SecondThread 会阻止 MainThread 运行。

关于java - 同时运行两个任务并更改一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096944/

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