1. 程式人生 > >Hashmap是執行緒安全的嗎?為什麼?有哪些執行緒安全的容器?hashmap與hashmap的區別?

Hashmap是執行緒安全的嗎?為什麼?有哪些執行緒安全的容器?hashmap與hashmap的區別?

Hashmap是執行緒安全的嗎?為什麼?

 

不是,多執行緒呼叫的情況下擴容會出問題。

 

有哪些執行緒安全的容器?

 

vactor、hashtable、concurrentHashMap、copyOnWriteArrayList是執行緒安全的。

 

hashmap與hashmap的區別?

1.繼承的類不同

2.hashtable中的方法是同步的,而hashmap中的方法在預設情況下是非同步的,在多執行緒併發的環境下,可以直接使用hashtable,hashtable的實現方法裡面添加了synchronized關鍵字來確保執行緒同步,但是hashmap則要自己新增同步處理。

3.hashtable中 key和value都不允許出現null值,在hashmap中null可以作為鍵,表示hashmap沒有這個鍵,也可以表示該鍵的value為null。不可以通過get()判斷hashmap是否存在某個鍵,應該用containkey()來判斷

4.在遍歷的方式上,hashtable和hashmap都用了iterator,由於歷史原理hashtable還使用過enumeration,另一個區別是hashmap的迭代器是fail-fast迭代器,而hashtable的enumerator迭代器不是fail-fast的,

5.雜湊值使用的不同,hashtable直接使用獨享的hashcode,hashmap重新計算hash值,

6 hashtable在求下標的時候是通過除length取餘,而hashma