我試圖想通過在一個Java應用程序的一些設計中關於內存分配和多線程,這就是我想知道:返回Java中的數組VS集合
我有了一個同步集合類說一個列表,幾秒鐘更新一次,但所有的更新都是在類和它自己的線程中發生,而不是從其他線程中發生。不過,我有很多其他線程調用getCollection()方法,並執行foreach以只讀方式迭代其內容。這是我不知道:
如果另一個線程迭代同步總彙將執行更新的單個線程必須等待,直到時間點沒有其他線程迭代?
我的第二個問題是,通過執行.toArray返回集合的數組副本而不是集合本身似乎是有意義的,但是從內存的角度考慮它並不需要分配新的數組那就是每次收集內容的大小,並且如果每秒鐘在具有數千個對象的集合上每秒調用數百次是我不知道的事情。
另外,如果我從來沒有返回集合本身不是使同步列表不再是必要的?
希望得到任何輸入。謝謝! - 鄧肯
+1:對我來說太快了。 ;) – 2011-03-23 19:04:15