Как синхронизировать геттер и сеттер из настроек? - PullRequest
0 голосов
/ 10 апреля 2020

Использование Java Я использую Preferences для хранения некоторых данных приложения. Я хочу сохранить конфигурацию в переменных во время выполнения. Но когда мне нужно установить значение, как я могу реализовать синхронизацию?

Это просто очень простой пример, чтобы понять мой вопрос:

public class Configuration {

    private static Preferences preferences = Preferences.userRoot().node("nodeName");


    private boolean isDarkMode;

    public Configuration() {
        // Get boolean value or return false if it does not exist
        this.isDarkMode = preferences.getBoolean("DARK_MODE", false);
    }

    //User changes setting to dark mode and the program needs to set the value to store it
    //TODO How can I synchronize this method?
    public static void setDarkMode(boolean b) {
         preferences.putBoolean("DARK_MODE", b);
         this.isDarkMode = b;
    }

    public static boolean isInDarkMode() {
        return isDarkMode;
    }
}

Насколько я понимаю, неправильно просто напишите synchronized для получения и установки, не так ли? Что такое правильное решение?

1 Ответ

1 голос
/ 10 апреля 2020

Предпочтения поточнобезопасны и могут быть доступны из нескольких потоков без необходимости синхронизации общих ресурсов. Вы можете вызвать flu sh () при записи, чтобы убедиться, что изменения внесены немедленно. Вместо создания члена класса, такого как isDarkMode, обращайтесь непосредственно к Preferences.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...