1
當不在列表中執行添加/刪除操作並且每個線程訪問固定集時,從不同線程訪問(讀取/寫入)相同ArrayList
的不同元素是否是線程安全的不相交的索引? 我看到沒有必要在這裏使用特殊的預防措施(如鎖定塊),但我只是想確定:可能出現什麼問題?訪問不同線程中的不同列表元素
當不在列表中執行添加/刪除操作並且每個線程訪問固定集時,從不同線程訪問(讀取/寫入)相同ArrayList
的不同元素是否是線程安全的不相交的索引? 我看到沒有必要在這裏使用特殊的預防措施(如鎖定塊),但我只是想確定:可能出現什麼問題?訪問不同線程中的不同列表元素
沒有。只要沒有刪除或添加完成陣列將不會被調整大小(並因此重新創建),每個得到(我)的電話將是安全的
它是強制性的持有在同一集合中的所有元素(可能是由於發佈所有線程完成時處理)?因爲如果不是,您甚至可以爲每個線程使用不同的列表,並在需要時將列表合併。 – Smutje 2014-10-16 20:26:28
好的不是強制性的,我總是可以使線程在值的副本上工作,然後在重新組合子列表完成所有線程後更新原始列表。但是,如果沒有安全問題,我仍然更喜歡更直接的方式! – splinter123 2014-10-17 07:26:36