【发布时间】:2014-04-16 00:34:45
【问题描述】:
我的问题与here 这个问题有关。我基本上想同时做两个任务:
- 从提要中收集数据并将其添加到对象列表中
- 阅读 对象列表,将其添加到数据库并删除添加到数据库的内容 从对象列表中
因此,我正在更改这两个单独任务中的对象列表,但我不确定如何共享它并使其可用于同时运行的两个任务进行更改。 我想在两个不同的任务中执行此操作的原因是因为来自提要的数据通常每 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 在开始另一个循环之前完成处理/将数据放入数据库中?
【问题讨论】:
-
你是指任务还是线程? (“任务”通常表示“进程”。)请注意,如果您无法在 5 秒内处理数据,则第二个线程可能不会提高您的吞吐量,除非它在另一个处理器上运行......即使那样也可能不会帮助取决于限制因素是什么。相反,您可能需要一个可以跟上传入数据的数据收集线程,该线程将工作到一个或多个处理线程,这些线程需要尽可能长的时间。
-
对不起,我想我的意思是线程。您对数据收集线程的建议听起来像我需要的。介意给我举个例子吗?
-
网络上有很多使用线程进行 Java 编程的示例和教程。看看他们,根据其中一个尝试一些东西,然后带着具体问题回到我们这里。
-
嗨@keshlam。请看我的编辑
标签: java feed multitasking