Зачем в этом getInstance synchronized делать ?
Это класс-синглтон для работы с сетью с использованием retrofit.
public static NetworkWorker getInstance(){
if (networkWorker == null){
synchronized (NetworkWorker.class) {
if (networkWorker == null) {
networkWorker = new NetworkWorker();
}
}
}
return networkWorker;
}
Ответ
При реализации синглтона даже с synchronized бывают случаи, когда при использовании многопоточности потокам удается дважды создать инстанс одного класса - что для реализации паттерна неприемлемо.
Synchronized нужен, для того, что-бы в методе\объекте в данный момент мог работать лишь один поток, и остальные ожидали окончания работы. По сути это очередь.
Если-бы это был просто класс, который необходимо защитить экраном synchronized - то проверка на null была бы одна, но поскольку здесь происходит реализация синглтона - то и проверки нужно сделать две.
Комментариев нет:
Отправить комментарий