В Java возвращаемое значение в синхронизированном блоке кажется плохим стилем. Это действительно имеет значение?

У меня есть Collections.synchronizedList WeakReference, _components;

Я написал что-то вроде следующего, ожидая, что компилятор пожалуется:

public boolean addComponent2(Component e) {
    synchronized (_components) {
        return _components.add(new WeakReference<Component>(e));
    }        
}

Но компилятор вполне устраивает. Обратите внимание, что List.add () возвращает TRUE. Итак, любой выход из синхронизированного блока снимает блокировку, но не выглядит ли это странно? Это похоже на «дыру» в блоке, похожую на использование возврата в цикле.

Будете ли вы рады поддерживать такой код?

Ответы на вопрос(2)

Ваш ответ на вопрос