Синхронизация, когда использовать или не использовать?

Я начал изучать параллелизм и потоки в 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
}
15
задан eebbesen 31 May 2018 в 14:13
поделиться