HashTable
давно устарела.Основное отличие состоит в том, что HashTable
синхронизируется внутри, а HashMap
- нет.Это, однако, рассматривается как недостаток, поскольку использование HashTable
в одном потоке влечет за собой штрафы за блокировку и разблокировку, когда в этом нет необходимости.
Кроме того, еще один момент, который делает синхронизацию HashTable
ненастолько полезным является тот факт, что выполнение двух поточно-ориентированных операций в последовательности не гарантирует атомарность всей последовательности, подумайте, например, о:
if(key does not exist)
add key
, в то время как тестирование существования и добавление являются поточно-безопасными,вышеуказанной конструкции нет, потому что другой поток может прервать его посередине.Следовательно, внешняя синхронизация необходима в любом случае.
Поэтому я не вижу смысла использовать HashTable
во все эти дни ...