Я прочитал, что хеш-таблицы являются потокобезопасными, потому что они синхронизированы. рассмотрите этот фрагмент кодаhashtable и синхронизация в Java
if(!hashtable.contains(key)){
hashtable.put(key,value);
}
Операции с хэш-таблицей могут не синхронизироваться. например, если Thread t1
получает доступ к hastable и проверяет наличие ключа, и в то же время Thread t2
проверяет ключ, прежде чем t1 выполнит put. теперь два потока находятся внутри блока if и происходит перезапись значения ключа.
поэтому синхронизированный блок необходим.
synchronized {
if(!hashtable.contains(key)){
hashtable.put(key,value);
}
}
Это понимание правильное? или безопасен для операций, которые выполняются на hastables. Я получил это сомнение, пока я читал это post on race condition
Да, это правильно. – SJuan76