回答
嘗試使用同一個實例訪問您的列表,或將其設置爲static並將其設置爲Synchronized以使列表線程安全。
您可以使用一個static
列表,以便隨時只有一個副本。另外請確保使用同步方法進行線程安全。
要從所有線程訪問列表的同一個實例,請將其設置爲靜態。例如:
private static List myList;
然後使訪問方法是線程安全的(即讓這個只有一個線程可以同時訪問它,這樣才能避免衝突)。例如:
public static synchronized updateList(String parameters) {
// Do something
}
您可以通過使用Collections類中的相關方法來確保您的List(或任何Collection)將是線程安全的。
從the API:
public static <T> List<T> synchronizedList(List<T> list)
Returns a synchronized (thread-safe) list backed by the specified list.
例如
static List mySharedList = Collections.synchronizedList(new ArrayList());
是的,所有的線程能夠訪問任何對象的同一實例(包括類)。因爲每個應用程序(即每個進程)都會創建一個內存空間。然後一個進程包含內部的所有線程,包括。隱含的'主'',共享內存空間。
如果僅在一個線程中使用對象,則不存在任何併發問題。你不需要任何「同步」,鎖定等。但有時你可能不得不在線程之間共享某些東西。如果讀和寫都可以同時在幾個線程中完成,這意味着你需要同步這個對象來處理所謂的「賽跑」。
您不必爲共享對象創建一個字段爲static
,以使它成爲線程安全的。如果有必要的話,你可以將這個對象作爲參數傳遞給一個擴展了Thread
類的類(或者在匿名類的情況下它甚至可以是包含類方法的局部變量)
所以你只需要只需通過此對象進行同步。您可以同步顯式的方法中:
synchronized (obj) {
// doing a thread-safe stuff
}
,或者你可以做一個方法完全使用這種方法修改的OBJ的類。在這種情況下,它將被隱式和自動同步的方法的調用,如「同步(本){..}」塊:
public void synchronized methodFoo() {
}
至於讀,讀我「的Java技術手冊」,章節5.7 。 「線程和併發」。由於Java中所有多線程可能性的概述,對我來說非常有幫助。
在線資源中,官方Sun/Oracle的教程可能對初學者有所幫助:http://docs.oracle.com/javase/tutorial/essential/concurrency/(已在其他答案中已提及)。
- 1. 訪問相同ArrayList的HashMap
- 2. ArrayList,線程和同步 - 如何準確同步多個線程
- 3. 兩個線程同時訪問同一個ArrayList?
- 4. 多線程訪問多線程應用程序中的相同代碼
- 5. 同時訪問多個線程的SQLitedatabase
- 6. 多個同時訪問單個線程
- 7. ConcurrentModificationException當多個線程訪問相同集合
- 8. 多線程共享/訪問相同數據的問題
- 9. 如何通過多線程成功訪問和循環ArrayList?
- 10. 被多個線程訪問
- 11. 如何從多個線程同時訪問MySQL
- 12. 如何從Java中的多個類訪問相同的對象
- 13. Python多線程訪問相同的文件
- 14. 訪問使用多線程相同的字符串(StringBuilder)對
- 15. 如何處理3個線程訪問C#中的相同函數
- 16. 如何訪問與thymeleaf arraylist每個arraylist?
- 17. 從多個應用程序中訪問相同的文件
- 18. 同步訪問ArrayList
- 19. 如何同步對多線程訪問的數組列表的訪問?
- 20. 可以同時訪問最多3個線程的java多線程方法
- 21. 如何訪問同一個插座上的多個線程的多線程客戶端
- 22. 多線程訪問同步語句
- 23. Java:多線程鏈表訪問同步
- 24. 多線程訪問(讀/寫)同一表
- 25. 多線程訪問同一類
- 26. 在多個相同的ID在jQuery中訪問textarea的值?
- 27. 如何通過多進程訪問相同的變量C/C++
- 28. 多個線程持有相同的鎖?
- 29. 水豚從兩個線程訪問相同的會話
- 30. cv :: VideoCapture:從兩個線程訪問相同的攝像頭
首先,訪問意味着什麼?你只是想讀取數組列表,或者想要使用多線程寫入它? – Sap
@Grrrr我想讀取和寫入 – Boni
這可能對您有所幫助http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#synchronizedList(java.util。名單) – Sap