Hashtable synchronized toàn bộ method — chỉ một thread truy cập tại một thời điểm, gây contention cao. ConcurrentHashMap dùng bucket-level locking (Java 8 dùng CAS + synchronized trên từng node), cho phép nhiều thread truy cập segment khác nhau đồng thời — hiệu năng tốt hơn nhiều. ConcurrentHashMap không cho phép null key/value.
Trong ứng dụng multi-threaded hiện đại, luôn ưu tiên ConcurrentHashMap; Hashtable là legacy.