在java中,在同步块中返回值是否重要?

时间:2017-03-06 02:33:49

标签: java synchronized

代码如下

input

所以我想知道将sUA返回到同步块内部或外部是否重要?

2 个答案:

答案 0 :(得分:0)

没有人可以告诉你一个正确的答案,因为代码看起来不完整。

那说,鉴于您发布的代码,为什么sUA是一个实例变量?

为什么要把它当作国家。如果您不需要该状态,最好的办法是return <whatever code is setting sUA>

如果您没有显示使用该状态的代码,则请求显示并...

同样private static Object sLock = new Object();不是使用syncrhonize的对象引用的正确方法。必须声明final才能正确保证语义。

更好的方法是使sUA锁定。而不是使用null使用NullObjectPattern并使用一个值来表示您使用null表示的任何内容。

使用private static final AtomicReference的值""或其他 null 值来表示未设置,您可以使用synchronize同时启用并保留该值。制作更易于维护的正确更清晰代码。

答案 1 :(得分:-3)

  

所以我想知道将sUA退回到内部或外部是否重要   同步块?

不,它根本不重要,如果你Group Header Item Detail Item Detail Item Detail Item -------------------------------------------- <--horizontal line Detail Item Detail Item Detail Item -------------------------------------------- Detail Item Detail Item Detail Item -------------------------------------------- <-- SUPPRESS ----------------------------------------------------------------- <-- Horizontal Line in group footer Group Header Item Detail Item Detail Item Detail Item -------------------------------------------- Detail Item Detail Item Detail Item -------------------------------------------- <-- SUPPRESS ----------------------------------------------------------------- 块之外的limited_var = var(variable1[variable1 > 50]) 它绝对没问题,如果它在return块内synchronized将被正确释放,所以没有任何伤害。

这是一个很好的LINK到jon双向飞碟&amp; Mark Byers回答了类似的问题。