Java Thread Safety -Блокировка всего статического класса, но только для одного метода

У меня реализован статический вспомогательный класс, который помогает кэшировать и извлекать некоторые только для чтения -, не -изменяемые, не -изменчивые данные из базы данных.

(Зачищенный )Пример:

public class CacheHelper
{
    private static HashMap foos, bars;

    public static Foo getFoo(int fooId) { /* etc etc */ }
    public static Bar getBar(int barId) { /* etc etc */ }

    public static void reloadAllCaches()
    {
        //This is where I need it to lock access to all the other static methods
    }
}

То, как я прочитал это для статических классов, если я добавлю ключевое слово synchronizedв метод reloadAllCaches (), это применит блокировку ко всему классу, пока этот метод выполняется. Это верно? (Редактировать :Да, неправильно. Спасибо за ответы.)

Примечание. :Я хотел бы оставаться независимым от потокобезопасности методов getterи объектов, которые они возвращают, поскольку эти данные никогда не изменяются, и хотелось бы, чтобы они возвращались как можно быстрее.

5
задан Nathan Hughes 9 January 2017 в 16:28
поделиться