memory-visibility相关内容

可变变量和其他变量

以下来自经典的Concurency in Practice: 当线程 A 写入 volatile 变量并随后写入线程 B 时读取相同的变量,所有 变量的值在写入 volatile 变量之前对 A 可见,变为可见读取 volatile 变量后到 B. 我不确定我是否真的能理解这句话.例如,在这种情况下所有变量是什么意思?这是否意味着使用 volatile 也会对非 volatile 变量 ..

为什么这个 Java 程序会终止,尽管它显然不应该(也不应该)?

今天我实验室的一次敏感操作完全出错了.电子显微镜上的一个执行器越过了它的边界,在一连串事件之后,我损失了 1200 万美元的设备.我已经将故障模块中的超过 40K 行缩小到: import java.util.*;A类{静态点 currentPos = new Point(1,2);静态类点{整数 x;输入 y;点(int x,int y){this.x = x;这.y = y;}}公共静态无效 ..
发布时间:2021-12-28 22:46:04 Java开发

易失性引用是否真的保证对象的内部状态对其他线程可见?

在阅读“实践中的Java并发性"时,我遇到了以下问题- 要安全地发布对象,必须同时使对该对象的引用和该对象的状态对其他线程可见.正确构造的对象可以通过以下方式安全发布: 从静态初始化程序初始化对象引用; 将对它的引用存储到volatile字段或AtomicReference中; 将对它的引用存储到适当构造的对象的最终字段中;或 将对其的引用存储到由锁适当保护的字段中. 我的 ..
发布时间:2020-07-31 03:05:26 Java开发

jvm重排/可见度效应测试

在编写一些java文章时,我试图重现重新排序在多线程环境中的非同步对象构造的情况下。 当重构对象被构造为w / o synchonization / volatiles / finals和其他线程在构造函数调用后立即访问它的情况。 这里是我尝试的代码: public class ReorderingTest { static SomeObject ..
发布时间:2016-12-26 19:27:26 Java开发

易失性变量和其他变量

以下是来自经典 Concurency in Practice : 写入volatile变量,随后线程B 读取相同的变量,在写入volatile变量之前, 可见的所有变量的值变为可见 到B之后读取volatile变量。 我不知道我真的能理解这个说法。例如,在这个上下文中所有变量的含义是什么?这是否意味着使用 volatile 也会对非易失性变量的使用产生副作用? 在我看来,这 ..

为什么这个Java程序终止,尽管显然它不应该(而没有)?

今天我的实验室的敏感操作完全错误。电子显微镜上的致动器越过其边界,在一系列事件后,我损失了1200万美元的设备。我在错误的模块中缩小了40K行: import java.util。*; class A { static Point currentPos = new Point(1,2); static class Point { int x; int y; Poin ..