Theo như tôi biết, java.util.Hashtable
đồng bộ hóa mỗi phương pháp trong giao diện java.util.Map
, trong khi Collections.synchronizedMap(hash_map)
trả về một đối tượng wrapper chứa phương pháp đồng bộ ủy thác cuộc gọi đến thực tế hash_map
(chính xác cho tôi nếu tôi là sai).Sự khác nhau giữa Hashtable và Collections.synchronizedMap (HashMap)
Tôi có hai câu hỏi:
hiện nó làm cho sự khác biệt gì để đồng bộ hóa mỗi và mọi phương pháp và có một lớp bao bọc? Các kịch bản để chọn một kịch bản khác là gì?
Điều gì sẽ xảy ra khi chúng tôi thực hiện
Collections.synchronizedMap(hash_table)
? Điều này có bằng đơn giản bằng cách sử dụng thông thườngjava.util.Hashtable
không?
có thể trùng lặp của [Sự khác biệt giữa HashMap và Hashtable?] (Http://stackoverflow.com/questions/40471/differences-between-hashmap-and-hashtable) –
Đây không phải là bản sao của câu hỏi * đó *. Đây là so sánh trình bao bọc được đồng bộ hóa trên HashMap (hoặc HashTable) với một HashTable. –
Tôi muốn được quan tâm để biết nếu có sự khác biệt về hiệu suất, mà không có địa chỉ trả lời hiện tại. Các phương thức gọi của 'Collections.synchronizedMap' thông qua biến kiểu Map có nghĩa là có 2 cuộc gọi ảo giao diện trước khi bạn thực hiện, trong khi với Hashtable, có tối đa 1 cuộc gọi ảo và bạn có thể khai báo biến của bạn dưới dạng Hashtable trực tiếp và thực hiện với 0 cuộc gọi ảo. Nhưng có lẽ HashMap khác nhau theo những cách khác làm cho nó nhanh hơn tổng thể. – Boann