所以我需要根据
创建一个ThreadList的ArrayListJava - Filling an ArrayList of Threads with loop
似乎我需要使用synchronized关键字,我的问题是:
如果我只在主线程上调用它,为什么我必须使用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?
答案 0 :(得分:1)
如果只有一个线程正在向其中添加值/从中读取值,我看不出有什么理由需要同步线程列表。至于第二部分,你是对的,join
- 调用将阻塞,直到i
'线程结束,然后才开始等待下一个。