2012-01-16 37 views
5

Lợi thế chính của việc sử dụng Hashtable so với HashMap là gì. Bởi vì, Hashtable lợi thế chính là đồng bộ hóa. Bản đồ bây giờ cũng có thể được đồng bộ hóa bằng cách sử dụng synchronizedMap().Ưu điểm của HashTable

Map m = Collections.synchronizedMap(hashMap); 
+3

IINM, sử dụng Hashtable là thực sự nản lòng và bạn nên cố gắng luôn luôn sử dụng HashMap trong bất kỳ mã mới. Hashtable được giữ lại để tương thích với mã cũ. – MAK

+0

Tại sao sau đó java không dùng nữa HashTable? – Kushan

+0

Không có điều như vậy HashTabl, nó được gọi là Hashtable và nó là "thời tiền sử" (trước) Bộ sưu tập IFS. Các phương thức của nó được đồng bộ, tuy nhiên nó không đảm bảo rằng các tham chiếu đến các đối tượng cư trú trong Hashtable không thể được sửa đổi đồng thời. – aviad

Trả lời

3

Hashtable tồn tại trước khuôn khổ bộ sưu tập, vì vậy nó được giữ lại chủ yếu cho tương thích ngược. Sử dụng ConcurrentHashMap để thay thế.

Lưu ý rằng có sự khác biệt nhỏ về ngữ nghĩa - Hashtable không cho phép null, trong khi HashMap cho phép giá trị null và khóa rỗng.

+0

Hiệu suất khôn ngoan, sự khác biệt giữa syncMap() và Hashtable là gì? – Kushan

+0

Không nên có sự khác biệt. Nhưng ConcurrentHashMap là tốt hơn – Bozho

+0

Cảm ơn sự hỗ trợ của bạn ... – Kushan

2

HashTable không được dùng nữa từ lâu. Sự khác biệt chính là HashTable được đồng bộ hóa nội bộ, trong khi HashMap thì không. Tuy nhiên, điều này được xem là bất lợi, bởi vì sử dụng HashTable trên một sợi đơn sẽ phát sinh hình phạt khóa và mở khóa khi không cần thiết.

Ngoài ra, một điểm mà ám đồng bộ HashTable 's không quá hữu dụng là một thực tế mà thực hiện hai hoạt động thread-safe trong một chuỗi không đảm bảo số nguyên tử của toàn bộ chuỗi, suy nghĩ ví dụ để:

if(key does not exist) 
    add key 

trong khi cả hai kiểm tra sự tồn tại và thêm là thread-an toàn, các cấu trúc trên là không, bởi vì một sợi có thể làm gián đoạn nó ở giữa. Do đó, đồng bộ hóa bên ngoài là cần thiết anyway.

Như vậy, tôi thấy không có lý do để sử dụng HashTable ở tất cả những ngày này ...

Các vấn đề liên quan