HashTable
ha quedado obsoleto hace mucho tiempo. La principal diferencia es que HashTable
se sincroniza internamente, mientras que HashMap
no lo está. Sin embargo, esto se ve como una desventaja, porque usar el HashTable
en un solo hilo incurre en la penalidad de bloqueo y desbloqueo cuando no es necesario.
Además, otro punto que hace que la sincronización de HashTable
's no tan útil es el hecho de que la ejecución de dos operaciones de hilo de seguridad en una secuencia no garantiza la atomicidad de toda la secuencia, pensar, por ejemplo, a:
if(key does not exist)
add key
mientras que probar existencia y agregar son seguros para subprocesos, el constructo anterior no lo es, porque otro subproceso podría interrumpirlo en el medio. Por lo tanto, la sincronización externa es necesaria de todos modos.
Como tal, no veo ninguna razón para utilizar HashTable
en todos estos días ...
IINM, el uso de HashTable es en realidad desanima y se debe tratar de utilizar siempre HashMap en cualquier código de nuevo. Hashtable se conserva para compatibilidad con el código anterior. – MAK
¿Por qué entonces java no desaprueba esa HashTable? – Kushan
No existe tal HashTabl, se llama Hashtable y es "prehistórico" (antes) de la Colección IFS. Sus métodos están sincronizados, sin embargo, no garantiza que las referencias a los objetos que pueblan el Hashtable no puedan modificarse simultáneamente. – aviad