Я начал изучать параллелизм и потоки в Java. Я знаю основы синхронизированного (то есть, что он делает). Концептуально я понимаю, что он обеспечивает взаимоисключающий доступ к общему ресурсу с несколькими потоками в Java. Но когда я сталкиваюсь с примером, подобным приведенному ниже, я не понимаю, стоит ли синхронизировать его. Я знаю, что критические участки кода должны быть синхронизированы, и это ключевое слово не следует использовать слишком часто, иначе оно повлияет на производительность.
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
}