Hashmap是線程安全的嗎?爲何?有哪些線程安全的容器?hashmap與hashmap的區別?

Hashmap是線程安全的嗎?爲何?安全

 

不是,多線程調用的狀況下擴容會出問題。多線程

 

有哪些線程安全的容器?併發

 

vactor、hashtable、concurrentHashMap、copyOnWriteArrayList是線程安全的。線程

 

hashmap與hashmap的區別?code

1.繼承的類不一樣繼承

2.hashtable中的方法是同步的,而hashmap中的方法在缺省狀況下是非同步的,在多線程併發的環境下,能夠直接使用hashtable,hashtable的實現方法裏面添加了synchronized關鍵字來確保線程同步,可是hashmap則要本身添加同步處理。get

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的,hash

5.哈希值使用的不一樣,hashtable直接使用獨享的hashcode,hashmap從新計算hash值,it

6 hashtable在求下標的時候是經過除length取餘,而hashmap用length-1進行與

相關文章
相關標籤/搜索