gpt4 book ai didi

synchronized-block - 在java中,同步块(synchronized block)内的返回值似乎是不好的风格。真的有关系吗?

转载 作者:行者123 更新时间:2023-12-03 06:07:07 30 4
gpt4 key购买 nike

我有一个 WeakReference 的 Collections.synchronizedList,_components;

我写了类似下面的内容,希望编译者会提示:

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

但是编译器非常满意。请注意,List.add() 返回 TRUE。好吧,任何同步块(synchronized block)的退出都会释放锁,但这看起来不奇怪吗?它有点像 block 中的“洞”,类似于在循环中使用 return。

您愿意维护这样的代码吗?

最佳答案

这绝对没问题 - 就像从循环或从具有适当的 finally block 的 try block 返回一样。您只需要了解语义,此时它就完全有意义了。

这肯定比引入局部变量更简单的代码:

// 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;
}

关于synchronized-block - 在java中,同步块(synchronized block)内的返回值似乎是不好的风格。真的有关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7971946/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com