java - 线程安全: Does incrementing values of a primitive wrapper okay?

标签 java multithreading

我知道像 Integer、Double、Float 这样的原始包装器是不可变的,至少我是这么读的。问题是,如果我们增加它们的值,每个增加的值都将被拆箱为其原始表示,然后将结果分配给新的引用。

现在我想同步增量值,但非常困惑,因为如果我同步初始值(在它们增量之前),但我无法控制新引用,除非我将每个新增量值分配给新变量,意味着每次增量时我都必须同步新引用。

遇到这种情况如何处理?

最佳答案

您可以使用 Atomic* (AtomicInteger, AtomicBoolean),其中内置了同步部分。

关于java - 线程安全: Does incrementing values of a primitive wrapper okay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44345977/

相关文章:

java - 向对象属性 javafx 添加监听器

java - 为什么实例字段不需要是 final 或有效 final 才能在 lambda 表达式中使用?

java - 从迭代器中获取键值

python - 在 Python 中使用多线程 blas 实现和多处理是否值得?

java - 调用notify()后什么时候锁才真正释放

c++ - 命名互斥体的不同句柄结果

c# - 在同步块(synchronized block)内部和外部使用字段是否安全?

java - 在 java.util.Collection 和 java.lang.Iterable 中声明的方法 iterator(),它的超接口(interface)?

Java swing BoxLayout 中心不起作用

java - java中的同步和代码重新排序