Я изучаю Android и изучаю базовые шаблоны проектов, предоставляемые Android Studio 3.4.1.Тот, который называется «Активность при входе» (доступен через Новый проект ...), устанавливает реализацию с классом репозитория в LoginRepository.java
public class LoginRepository {
private static volatile LoginRepository instance;
private LoginDataSource dataSource;
private LoggedInUser user = null;
// private constructor : singleton access
private LoginRepository(LoginDataSource dataSource) {
this.dataSource = dataSource;
}
public static LoginRepository getInstance(LoginDataSource dataSource) {
if (instance == null) {
instance = new LoginRepository(dataSource);
}
return instance;
}
// other methods excluded for simplicity
}
}
ссылка на описание android.com
ссылка на другой вопрос с большим количеством кода приложения
Использование volatile
предполагает, что они хотят поточной безопасности (хотя я не уверен почему, так как это выглядит какоднопоточное приложение).
Если требуется защита потоков, то почему в методе getInstance нет synchronized
?
Если потокобезопасность не требуется, почему используется volatile
?
Я понимаю, что можно использовать volatile
без synchronized
в таких многопоточных случаях, как этот другой вопрос но в нашем случае мы делаем синглтон.
Спасибо