Concorrência Java - use qual técnica para obter seguranç

Eu tenho uma lista de personId. Existem duas chamadas de API para atualizá-lo (adicionar e remover):

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
}

Eu sei que pode haver um problema de simultaneidade. Eu li cerca de 3 soluções:

synchronized o métodusarCollections.synchronizedlist()CopyOnWriteArrayList

Não tenho certeza de qual deles prefere evitar a inconsistênci

questionAnswers(6)

yourAnswerToTheQuestion