【问题标题】:AtomicStampedReference.get() method: why parameter is array? [duplicate]AtomicStampedReference.get() 方法:为什么参数是数组? [复制]
【发布时间】:2016-09-29 15:16:52
【问题描述】:

前段时间我开始研究java.util.concurrent包。我的问题是关于AtomicStampedReference 类。该类有方法

public V get(int[] stampHolder) {
    ...
}

自动获得参考和标记(如果我错了,请纠正我)。

方法的参数是数组有什么特殊原因吗?文档对此只字未提。

【问题讨论】:

    标签: java concurrency java.util.concurrent


    【解决方案1】:

    也许(可能)这只是对simulate out parameters 的一种破解,因为在这种情况下应该返回两个值:V 和一个int 值。

    另一种可能性是返回元组Tuple<V,Integer>,但Java没有Tuple类,创建Tuple对象的实例并另外装箱int可能效率较低,在并发环境中可能很重要。

    【讨论】:

    • 很明显,实际上我们得到了两个新值。但是为什么先生。例如,Doug Lea 决定使用int[] stampHolder 而不是使用int stampHolder?此方法仅使用第一个数组元素 - stampHolder[0] = p.integer
    • @DmitriyProtsenko:如果方法被定义为public V get(int stampHolder),如果stampHolder被修改,调用者将不会得到更新的值,因为它是按值传递的。见stackoverflow.com/questions/40480/…
    • 最后一个链接很有用。现在我没有任何问题。谢谢!
    猜你喜欢
    • 2013-01-11
    • 2014-04-07
    • 1970-01-01
    • 2016-04-30
    • 2017-10-05
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多