2012-11-09 57 views
4

我有一個簡單的ArrayList,我通過Java併發性從多個Thread s中提供此ArrayList。每個Thread將僅讀取此ArrayList的相同實例。閱讀過程中是否有錯誤發生?在並行系統中讀取ArrayList

+2

如果arraylist沒有改變,我想不出爲什麼會有問題,因爲所有的線程都在做的是訪問列表和閱讀。 – DWolf

+1

所以你有多個線程同時寫入列表?他們是從列表中讀取還是您的讀者都在不同的線程? – Perception

+0

@Perception在啓動併發之前,列表已被完全填充,因此線程只能讀取它。 –

回答

5

只要沒有更多的寫入使它不可改變使用Collections.unmodifiableList,然後忘記讀取的問題。

5

如果列表完全填充並始終以所有線程的只讀方式訪問,則不會有問題。如果有寫入操作,則需要將所有訪問同步到列表中,或使用併發列表(如CopyOnWriteArrayList)。

+0

非常感謝。 –

相關問題