如何執行緒安全的使用HashMap

2021-04-18 23:25:17 字數 2320 閱讀 6636

1樓:匿名使用者

hashmap,hashset,arraylist都不具備執行緒安全。可以用set s=collections.synchronizedset(new hashset());map m=collections.

synchronizedmap(new hashmap());list l=collections.synchronizedlist(new arraylist());獲得被同步後的版本。也可版以用concurrenthashmap等同步工具代替權

如何執行緒安全的使用hashmap

如何實現執行緒安全的hashmap

2樓:匿名使用者

public class maptest catch (interruptedexception ex)

system.out.println(iterator.nextelement());}}

}).start();

new thread(new runnable() catch (interruptedexception ex)

system.out.println(iterator.nextelement());}}

}).start();}}

這是沒有異常**

public class maptest catch (interruptedexception ex)

system.out.println(iterator.next());}}

}).start();

new thread(new runnable() catch (interruptedexception ex)

system.out.println(iterator.next());}}

}).start();}}

這裡是有異常**,iterator 時產生異常的主要原因,iterator建立的時候會拿到建立時容器的容量,一個整形資料。 讀取的時候就拿這個容量資料先去檢查是不是和當前實際容量相等,如果不相等就concurrentmodificationexception異常,相等就開始讀資料,所謂執行緒安全就是一個執行緒在使用iterator 讀資料的時候,另外執行緒往裡加資料,結果就出現iterator 儲存的容器容量和當前實際容量不等了,就不安全了。

而在hashtable中使用了enumeration這個執行緒安全的物件,就是說在另外的執行緒里加東西的時候他會知道當前容器已經改變,所以使用他是執行緒安全的。

如果樓主還不明白去開下源**就知道了。

3樓:匿名使用者

map m = collections.synchronizedmap(new hashmap());即可

4樓:day忘不掉的痛

直接用hashtable,hashtable執行緒安全。

我一般都會hashmap凡是在一個方法內部new並且不傳到方法外面的基本上可以用hashmap,執行緒不安全的時候用currenthashmap。

比如類屬性是map或者靜態屬性map而且會在不同的執行緒併發執行操作map時。

5樓:匿名使用者

hashtable不就可以嗎。

如何執行緒安全的使用hashmap

如何執行緒安全的使用hashmap

6樓:十口相傳

// synchronizedmap方法

62616964757a686964616fe4b893e5b19e31333363373763

public static mapsynchronizedmap(mapm)

// synchronizedmap類

private static class synchronizedmap

implements map, serializable

synchronizedmap(mapm, object mutex)

public int size()

}public boolean isempty()

}public boolean containskey(object key)

}public boolean containsvalue(object value)

}public v get(object key)

}public v put(k key, v value)

}public v remove(object key)

}// 省略其他方法}

如何執行緒安全的使用hashmap

python的多執行緒使用setDaemon有什麼意義

使用setdaemon 和守護執行緒這方面知識有關,比如在啟動執行緒前設定thread.setdaemon true 就是設定該執行緒為守護執行緒,表示該執行緒是不重要的,程序退出時不需要等待這個執行緒執行完成。這樣做的意義在於 避免子執行緒無限死迴圈,導致退不出程式,也就是避免樓上說的孤兒程序。t...

c中 有沒有執行緒安全的list類 以及 執行緒安全的set類

msdn說了,list類就是執行緒安全的。但是,他只負責list的執行緒安全,不能負責list元素訪問的執行緒安全。也就是說,他保證,對list進行元素的增加,刪除什麼的,是執行緒安全的。但對於其中的每個元素的內部資訊,比如屬性修改什麼的,他就沒有辦法管了。有的,concurrentbag list...

如何科學合理使用農藥,如何科學安全合理使用農藥

科學合理使用農藥,應從以下幾方面入手 1 遵守農藥安全使用規則 嚴格禁止劇毒 高毒 高殘留或具有三致性 致癌 致畸 致突變 的農藥在無公害農產品上使用。根據作物種類不同 安全程度要求不同,對某些農藥的使用範圍進行進一步的限制,如溴氰菊酯 三氯殺蟎醇,因為歐盟對進口茶葉標準的提高而限制或禁止使用。2 ...