public class VolatileExample {
private volatile boolean flag = true;
public void run() {
new Thread(() -> {
while (flag) {
// do something
}
System.out.println("Thread stopped.");
}).start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
flag = false;
System.out.println("Flag set to false.");
}
public static void main(String[] args) {
VolatileExample example = new VolatileExample();
example.run();
}
}
volatile
关键字用于修饰变量,确保多线程环境下的可见性。即当一个线程修改了该变量的值,其他线程能够立即看到最新的值。flag
被声明为 volatile
,因此在主线程中将 flag
设置为 false
后,子线程能够立即感知到这个变化并退出循环。volatile
,可能会导致子线程无法及时感知到 flag
的变化,从而继续执行或出现不可预期的行为。上一篇:java 获取当前时间
下一篇:java: 找不到符号
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站