我需要維護一個散列映射,它應該對所有執行的線程公開。 例如,一個特定線程更新的哈希映射也應該可用於其他線程,反之亦然。請建議我用Java實現。線程唯一數據
主程序包含hashmap。從這個主線我會刺激許多線程。每個線程應該訪問主程序中可用的相同散列表。
在此先感謝。
我需要維護一個散列映射,它應該對所有執行的線程公開。 例如,一個特定線程更新的哈希映射也應該可用於其他線程,反之亦然。請建議我用Java實現。線程唯一數據
主程序包含hashmap。從這個主線我會刺激許多線程。每個線程應該訪問主程序中可用的相同散列表。
在此先感謝。
看看這裏的所有線程安全的數據結構... http://download.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html
我猜你需要一個併發的哈希表。如果您可以將地圖更改爲列表,則可以使用CopyOnWriteArrayList,它允許高效的安全方式來讀取寫入列表。
Java中的問題是不能在多個線程之間共享變量:只需將對象的引用傳遞給線程即可。請記住,您需要確保安全地訪問它...併發修改可能是一個麻煩。我建議你檢查java併發教程,這是一個非常好的起點:http://download.oracle.com/javase/tutorial/essential/concurrency/index.html
哈希映射可以是靜態的,並可以使用ClassName在線程中訪問。我想這是一個解決方案,但併發可能是一個問題。期待有關此問題的其他良好解決方案。
不要讓它成爲靜態的 - 這種方式存在併發問題,並且使得代碼不易測試。相反,使用並行散列映射:
http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html
,並傳遞給需要它的每個線程對它的引用。
語言?平臺? – vickirk 2011-06-07 09:18:58
如果你讓我們知道你正在使用哪種語言和環境可能會有所幫助 – Steve 2011-06-07 09:19:47
哎呀..對不起......它在Java中...... – rozar 2011-06-07 09:26:29