簡體   English   中英

為什么我必須同步線程的ArrayList?

[英]Why do i have to synchronized an ArrayList of Threads?

所以我需要創建一個線程的ArrayList但根據

Java-用循環填充線程的ArrayList

看來我需要使用synced關鍵字,然后我的問題是:

如果即時消息僅在主線程上調用此函數,為什么我必須使用synced關鍵字? 沒有其他線程可能會做同樣的事情嗎?

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循環會在第ith個線程返回之前停止,然后繼續等待ith + 1嗎?

如果只有一個線程向其中添加值/從中讀取值,我看不出您為什么需要同步線程列表的任何原因。 至於第二部分,您是對的, join -call將阻塞直到第i個線程完成,然后再等待下一個線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM