我的问题与此问题here有关。我基本上想要同时完成两项任务:
所以我正在更改这两个单独任务中的对象列表,我不知道如何共享它并让它可以同时运行的两个任务进行更改。 我想在两个不同的任务中执行此操作的原因是因为来自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在开始另一个循环之前完成处理/将数据放入db中?
答案 0 :(得分:1)
由于您似乎找到了第一组问题的内容,我将回答您的上一个问题:
我想知道的是,MainThread中的while循环是否等待SecondThread在开始另一个循环之前完成处理/将数据放入db中?
在您的示例中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运行。