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 ...
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
Tại sao sau đó java không dùng nữa HashTable? – Kushan
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