我试图在列表中添加一些项目并保留添加顺序。问题是 的添加部分是在一个线程中完成的,因为我需要从DB获得一些细节,将它们放在
项目中并将其添加到列表中。如何将项目添加到线程列表中并保持添加顺序?
public void addNewItem(Step item){
Thread t = new Thread(new Runnable(){
public void run() {
item.setDetails(db.getStepDetails(step.getId()));
add(item);
}
});
t.start();
}
的add
方法是这样的:
private void add(Step step){
mitems.add(step);
}
如果我这样做
addNewItem(stepA);
addNewItem(stepB);
如果第一次调用花费太多时间,第二项是第一次在我的名单中添加。
您是否知道在我的列表中继续添加任何其他项目之前,我该如何等待某个操作完成?
谢谢。
我可能是错的,但我相信使用'synchronize'可以解决这个问题 – codeMagic 2013-04-11 12:44:13
你真的想用一个单独的线程?在你的情况下,你需要按顺序执行指令。 – blint 2013-04-11 12:46:11
解决方法是一个同步的ID,每次添加时都会增加并存储在添加的项目中。然后,您可以在结果容器中看到添加项目的顺序。 – TheBlastOne 2013-04-11 12:46:29