Hashtable的方法是同步的、線程安全的;HashMap的方法不是同步的、線程不安全。HashMap效率較高,Hashtable效率較低。


同步的意思是加鎖的意思

二、HashTable和ConcurrentHashMap的區別:

在進行迭代時,HashTable會鎖住整個Map,而ConcurrentHashMap只鎖住Map的一部分,所以ConcurrentHashMap在多線程環境下的性能更好。

三、如何讓HashMap實現同步功能?

Map m = Collections.synchronizeMap(hashMap);

一、HashMap與HashTable的區別:

1.HashMap是非線程安全的,HashTable是線程安全的,HashTable中的很多方法都是加了sysnchronized關鍵字的,確保了方法的同步;

2.HashMap可以接受空key和value,而HashTable不能接受空key和value;

3.由於HashMap是異步執行,而HashTable是同步執行,所以在單線程環境下,HashMap的速度高於HashTable;

4.HashMap的迭代器采用的是Iterator,Iterator是快速失敗(Fail-Fast),在遍歷過程中若有其他線程對該HashMap進行增加或者刪除元素,則會拋出ConcurrentModificationException,因為快速失敗的迭代器是操作的集合本身,

HashTable的迭代器是Enumeration,Enumeration是安全失敗(Fail-Safe),在遍歷過程中若有其他線程對該集合進行增加或則刪除元素,不會拋出ConcurentModificationException,因為安全失敗的迭代器操作的是原集合的一個拷貝。
————————————————
版權聲明:本文為CSDN博主「agallochmind」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/agallochmind/article/details/78374813


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM