У меня реализован статический вспомогательный класс, который помогает кэшировать и извлекать некоторые только для чтения -, не -изменяемые, не -изменчивые данные из базы данных.
(Зачищенный )Пример:
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
и объектов, которые они возвращают, поскольку эти данные никогда не изменяются, и хотелось бы, чтобы они возвращались как можно быстрее.