gpt4 book ai didi

java - 为什么我必须同步线程的 ArrayList?

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:40 25 4
gpt4 key购买 nike

所以我需要创建一个线程数组列表,但根据

Java - Filling an ArrayList of Threads with loop

看来我需要使用synchronized关键字,那么我的问题是:

如果我只在主线程上调用它,为什么我必须使用同步关键字?没有其他线程可以做同样的事情吗?

ArrayList<Thread> t = new ArrayList<Thread>();
for(int i=0;i<love.size();i++){
BTConnection cbtc = love.get(i).btc;
if(cbtc!=null){
Communicate temp = new Communicate(cbtc);
Thread ttemp = new Thread(temp);
ttemp.start();
t.add(ttemp);
}
}

此外,如果就在我使用的代码下方:

for(int i=0;i<t.size();i++){
t.get(i).join();
}

for循环是否会停止直到第i个线程返回,然后继续等待第i+1个?

最佳答案

如果只有一个线程向其中添加值/从中读取值,我看不出您需要同步线程列表的任何原因。至于第二部分,您是正确的,join 调用将阻塞,直到第 i 线程完成,然后再等待下一个线程。

关于java - 为什么我必须同步线程的 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25585163/

25 4 0