vsb>но многие пишут, что так не стоит делать, это засорение intern-пула,
Начиная с Java7 этот пул в обычном хипе и, соответственно, там даже мусор собирается.
vsb>теоретический дедлок, если в другом месте случайно по той же строке будет синхронизация и тд.
Вот это верно — никогда нельзя делать синхронизацию на объектах, жизненный цикл которых ты не контролируешь от и до.
vsb>но как-то это всё сложно выглядит. Не упускаю ли я какой-то готовый примитив синхронизации?
Не упускаешь
vsb>Вопрос — чем заменить этот код? Пока написал как-то так (Java 7):
А чего этот код делает? Именованный лок, который много раз может лочиться и отпускаться? Нормально тогда.