为什么将方法参数重新分配给局部变量?

初始零:

浏览Java API源代码时,我经常看到方法参数已重新分配给局部变量。为什么要这样做?

void foo(Object bar) {
  Object baz = bar;
  //...
}

这在java.util.HashMap中

public Collection<V> values() {
  Collection<V> vs = values; 
  return (vs != null ? vs : (values = new Values())); 
}
Petro Semeniuk:

这是线程安全性/更好性能的规则。valuesHashMap易失。如果将变量分配给局部变量,它将变为局部堆栈变量,该变量自动是线程安全的。而且,修改本地堆栈变量不会强制“先发生”,因此在使用它时不会产生同步损失(与之不同的是,每次读/写操作都将导致易失性,这会花费您获取/释放锁的时间)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将类实例变量引用重新分配给局部变量引用

局部变量的内存被重新分配 - 为什么

将引用参数分配给局部变量

可以将具有推断类型的局部变量重新分配给其他类型吗?

通过重新分配方法参数的变量,将值重新分配给方法内部的实例变量

将共享指针传递给函数参数-将其分配给局部变量的正确方法是什么

将js函数分配给局部变量后,为什么它们会失败?

将窗口变量分配给局部变量

Haskell:为什么将变量的尾部重新分配给它自己的变量会出现问题?

无法重新分配局部变量

将实例字段分配给局部变量

想法:“将语句分配给新的局部变量”?

使用if语句将值分配给局部变量

将ivars分配给函数内的局部变量?

将退出代码分配给Shell局部变量

将数组值分配给局部变量

C ++-将参数分配给函数标题中的局部变量

为什么分配给堆栈中的局部变量的内存比C ++所需的内存多?

为什么它不直接使用实例字段,而是将其分配给局部变量?

将POST变量分配给局部变量的最佳方法

为什么当我尝试重新分配变量时收到错误消息:“将此无用的分配删除给局部变量”

将实例变量重新分配给本地方法变量

关于Java中的Singleton模式,为什么不直接将静态变量分配给方法中的新局部变量,为什么不直接使用静态变量呢?

通过echo将变量重新分配给自己有什么目的?

为什么将智能指针重新分配给自身会导致破坏?

为什么代码没有将类重新分配给 id 标签而是中断?

将值重新分配给字典的pythonic方法

在 C++ 中,为什么当我将引用变量重新分配给不同的引用变量时,它会创建该变量的副本?

将全局变量分配给同一类中的构造方法和设置方法中的局部变量的目的是什么?