- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设置一个标志,该标志由任何设置它的线程设置一次。所有其他线程都会在不同的时间,经常重复读取此标志。
现在我使用的是 AtomicBoolean,它工作得很好,但我知道如果经常查询它,它可能比普通 boolean 值慢得多(不确定这是否属实)。
将其更改为静态 boolean 值是否是线程安全的?无论谁能做到这一点,都可以将标志设置为 true,事实上,所有人都可能被允许多次设置标志。
我担心的是那些阅读旗帜的人能够多快地发现它?会是对的吗?或者他们可能没有理解正确?
此外,使用经常查询的 AtomicBoolean 对性能的影响有多大?
此外,我是否应该考虑在 AtomicBoolean 上使用 volatile boolean 值,因为我几乎只会设置一次并读取它,并且可以原子地执行设置操作(复制 AtomicBoolean 中的代码以获取 getAndSet())
最佳答案
当大多数线程只读取变量并且只有其中一个线程会更改值时,您无需担心性能。 AtomicBoolean 使用名为 CAS 的机制现在大多数现代处理器都支持它,并且是低级操作。由于使用 CAS,读取值时几乎没有任何缺点(这与使用标准锁不同)。在您描述的场景中, volatile 静态 boolean 值就足够了 - volatile 阻止jvm在从变量读取时进行优化,例如重用寄存器中保存的值而不是检查内存中的值,因此每当一个线程更改变量的值时,其他线程都会看到改变。在您的情况下,两种解决方案都会给出相似的性能结果(即使不是相同的性能结果)。在有大量写入操作的场景中,Volatile 会比 AtomicBoolean 更快,但说实话,我无法想象你有大量写入操作而没有人有兴趣阅读的场景。
关于java - AtomicBoolean,设置一次标志,有必要吗?静态 boolean 值可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28397445/
我正在使用 this solution在二进制矩阵中找到与图像边界对齐的矩形。假设现在我想找到一个不与图像边框对齐的矩形,并且我不知道它的方向;找到它的最快方法是什么? 为了示例,让我们寻找一个仅包含
else: 行在这个 Python 程序中是否正确/必要? from random import randrange for n in range(10): r = randrange(0,1
在 TDPL 7.1.5.1 中讨论了将 Widget w2 分配给 w1 并且作者指出“将 w2 逐个字段分配给 w1 会将 w2.array 分配给 w1.array——一个简单的数组边界分配,而
我是一名优秀的程序员,十分优秀!