gpt4 book ai didi

java - 在java中测试 volatile 变量

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:47 25 4
gpt4 key购买 nike

我编写了一个简单的程序来测试 volatile 变量。至于我在 t2 运行时编写的程序,它应该选择 i 的值为 3 并且永远不应该进入 while 循环

但它输出012012既然它是 volatile 的,它不应该只打印 0,1,2 吗??

public class Test{
public static void main(String []args) throws InterruptedException{
TestVolatile t1 = new TestVolatile();
t1.start();
t1.join();
TestVolatile t2 = new TestVolatile();
t2.start();
}
}

class TestVolatile extends Thread{
volatile int i = 0;
public void run(){
while(i < 3){
System.out.println(i);
i++;
}
}
}

最佳答案

您正在创建 2 个不同的 TestVolatile 对象,每个对象都有自己的变量 i 并且只能使用它。因此第一个对象递增并输出 0、1、2,第二个对象也是如此。

你需要像这样使i静态

static volatile int i = 0; 

关于java - 在java中测试 volatile 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49702859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com