gpt4 book ai didi

java - 如何从线程中将项目添加到列表并保持添加顺序?

转载 作者:行者123 更新时间:2023-11-29 09:04:00 25 4
gpt4 key购买 nike

我正在尝试在列表中添加一些项目并保持添加顺序。问题是 添加部分是在一个线程中完成的,因为我需要从数据库中获取一些详细信息,将它们放在一个
项目并将其添加到列表中。

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);

如果第一个调用花费太多时间,第二个项目将首先添加到我的列表中。

您知道我如何才能等待操作完成才能继续在我的列表中添加任何其他项目吗?

谢谢。

最佳答案

您可以添加同步块(synchronized block)或使用 ReentrantLock。

Thread t = new Thread(new Runnable(){
public void run() {
synchronized(someSafeVar) {
item.setDetails(db.getStepDetails(step.getId()));
add(item);
}
}
});

另外,如果只有“add”方法耗时,则只能同步该方法。

关于java - 如何从线程中将项目添加到列表并保持添加顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15949035/

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