Concurrencia de Java: ¿utilizar qué técnica para lograr la seguridad?
Tengo una lista de personId. Hay dos llamadas API para actualizarlo (agregar y eliminar):
public void add(String newPersonName) {
if (personNameIdMap.get(newPersonName) != null) {
myPersonId.add(personNameIdMap.get(newPersonName)
} else {
// get the id from Twitter and add to the list
}
// make an API call to Twitter
}
public void delete(String personNAme) {
if (personNameIdMap.get(newPersonName) != null) {
myPersonId.remove(personNameIdMap.get(newPersonName)
} else {
// wrong person name
}
// make an API call to Twitter
}
Sé que puede haber un problema de concurrencia. Leí sobre 3 soluciones:
synchronized
el métodutilizarCollections.synchronizedlist()
CopyOnWriteArrayList
No estoy seguro de cuál preferir para evitar la inconsistencia.