Я просматривал некоторые фрагменты кода, глядя на аспект синхронизации. Я считаю, что блокировка происходит на объектах. В случае Java у нас есть только ссылки на объекты.
Java должна использовать ссылку для получения объекта и его блокировки.
Что произойдет, если ссылка окажется нулевой? Я чувствую, что это сломается. Если бы это работало, блокировка должна происходить и по ссылкам (что лучше меня). Может кто-нибудь уточнить это для меня.
synchronized (formatters) {
if(formatters == null) {
prepareCache(feedId);
}
}