Это выглядит совершенно бессмысленно - экземпляр buffer
создается прямо внутри потока, поэтому никакие другие потоки не могут иметь ссылку на него.Следовательно, блок synchronized
будет всегда всегда без присмотра и, следовательно, ничего не защищает, плюс никакой другой поток не будет синхронизироваться с ним позже, поэтому нет никаких эффектов согласованности памяти.предполагаемая семантика, это может быть ошибка, или это может быть просто особенность, оставшаяся от рефакторинга, которая не вызывает никаких проблем.(Поскольку с точки зрения корректности это эквивалентно отсутствию синхронизации вообще, а с точки зрения производительности - лишь незначительно хуже.)
С другой стороны, Hotspot в Java 6 оптимизирует этот блок.: -)