Sincronización, ¿Cuándo o no usar?

He comenzado a aprender la concurrencia y los hilos en Java. Conozco los conceptos básicos de la sincronización (es decir, lo que hace). Conceptualmente entiendo que proporciona acceso mutuamente exclusivo a un recurso compartido con múltiples subprocesos en Java. Pero cuando me enfrento a un ejemplo como el que aparece a continuación, estoy confundido acerca de si es una buena idea sincronizarlo. Sé que las secciones críticas del código deben estar sincronizadas y esta palabra clave no debe utilizarse en exceso o afecta el rendimiento.

<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>

Respuestas a la pregunta(6)

Su respuesta a la pregunta