Sincronização, quando ou não usar?

Eu comecei a aprender a simultaneidade e threads em Java. Eu sei o básico do sincronizado (isto é, o que faz). Conceitualmente, eu entendo que ele fornece acesso mutuamente exclusivo a um recurso compartilhado com vários threads em Java. Mas quando me deparo com um exemplo como o abaixo, estou confuso sobre se é uma boa ideia sincronizá-lo. Eu sei que seções críticas do código devem ser sincronizadas e essa palavra-chave não deve ser usada em demasia ou afeta o desempenho.

<code>public static synchronized List<AClass> sortA(AClass[] aArray) 
{
    List<AClass> aObj = getList(aArray);

    Collections.sort(aObj, new AComparator());

    return aObj;
}

public static synchronized List<AClass> getList(AClass[] anArray) 
{
    //It converts an array to a list and returns
}
</code>

questionAnswers(6)

yourAnswerToTheQuestion