В Java возвращаемое значение в синхронизированном блоке кажется плохим стилем. Это действительно имеет значение?
У меня есть Collections.synchronizedList WeakReference, _components;
Я написал что-то вроде следующего, ожидая, что компилятор пожалуется:
public boolean addComponent2(Component e) {
synchronized (_components) {
return _components.add(new WeakReference<Component>(e));
}
}
Но компилятор вполне устраивает. Обратите внимание, что List.add () возвращает TRUE. Итак, любой выход из синхронизированного блока снимает блокировку, но не выглядит ли это странно? Это похоже на «дыру» в блоке, похожую на использование возврата в цикле.
Будете ли вы рады поддерживать такой код?