为什么我必须同步ThreadList的ArrayList?

时间:2014-08-30 17:43:55

标签: java multithreading arraylist synchronized

所以我需要根据

创建一个ThreadList的ArrayList

Java - 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?

1 个答案:

答案 0 :(得分:1)

如果只有一个线程正在向其中添加值/从中读取值,我看不出有什么理由需要同步线程列表。至于第二部分,你是对的,join - 调用将阻塞,直到i'线程结束,然后才开始等待下一个。