我試圖在列表中添加一些項目並保留添加順序。問題是 的添加部分是在一個線程中完成的,因爲我需要從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