Cha*_*eed 49 synchronized-block
我有一个WeakReference的Collections.synchronizedList,_components;
我写了类似下面的内容,期待编译器抱怨:
public boolean addComponent2(Component e) {
synchronized (_components) {
return _components.add(new WeakReference<Component>(e));
}
}
Run Code Online (Sandbox Code Playgroud)
但编译器非常满意.请注意,List.add()返回TRUE.好吧,从synchronized块的任何退出都会释放锁,但是这个LOOK不是很奇怪吗?它有点像块中的"洞",类似于在循环中使用return.
你会很乐意维护这样的代码吗?
Jon*_*eet 60
它绝对没问题 - 从循环返回,或从try具有适当finally块的块返回.你只需要了解语义,在这一点上它是完全有道理的.
它的代码肯定比为了它引入局部变量更简单:
// Ick - method body is now more complicated, with no benefit
public boolean addComponent2(Component e) {
boolean ret;
synchronized (_components) {
ret = _components.add(new WeakReference<Component>(e));
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17123 次 |
| 最近记录: |