Я просмотрел отчет Findbugs на моей базе кода, и один из шаблонов, который был запущен, был для пустого synchronzied
(т.е. synchronized (var) {}
). Документация сообщает:
Пустые синхронизированные блоки намного больше тонкий и жесткий в использовании, чем большинство людей распознают и пустые синхронизированные блоки почти никогда не являются лучшее решение, чем менее изобретенное решения.
В моем случае это произошло потому, что содержимое блока было закомментировано, но оператор synchronized
все еще был там. В каких ситуациях пустой блок synchronized
мог бы получить правильную семантику потоков?