Synchronizacja, kiedy czy nie używać?

Rozpocząłem naukę współbieżności i wątków w Javie. Znam podstawy synchronizacji (tj. Co robi). Pojęciowo rozumiem, że zapewnia on wzajemnie wykluczający się dostęp do współdzielonego zasobu z wieloma wątkami w Javie. Ale w obliczu przykładu takiego jak poniższy, jestem zdezorientowany, czy dobrym pomysłem jest zsynchronizowanie go. Wiem, że krytyczne sekcje kodu powinny być zsynchronizowane, a to słowo kluczowe nie powinno być nadużywane lub wpływa na wydajność.

<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