更新时间:2024-03-12 来源:黑马程序员 浏览量:

volatile是一个关键字,用于声明一个变量可能会在程序的外部被修改,因此编译器不应该对这个变量的访问进行优化。volatile的主要作用是告诉编译器不要对该变量进行优化,以确保在多线程或者多任务环境下,变量的读取和写入是可见的,并且不会被编译器的优化所影响。
volatile关键字提供以下保证:
1.禁止编译器对变量进行优化,确保每次访问都会从内存中读取或写入。
2.保证多线程环境下对变量的读写操作是可见的,即一个线程对变量的修改能够立即被其他线程看到。
下面是一个简单的示例,演示了volatile变量的使用:
public class VolatileExample {
private volatile boolean flag = false;
public void toggleFlag() {
flag = !flag;
}
public void printFlag() {
System.out.println("Flag value: " + flag);
}
public static void main(String[] args) {
VolatileExample example = new VolatileExample();
// Thread to continuously toggle the flag
Thread toggleThread = new Thread(() -> {
while (true) {
example.toggleFlag();
try {
Thread.sleep(1000); // Sleep for 1 second
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
// Thread to continuously print the flag value
Thread printThread = new Thread(() -> {
while (true) {
example.printFlag();
try {
Thread.sleep(2000); // Sleep for 2 seconds
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
toggleThread.start();
printThread.start();
}
}在这个示例中,flag变量被声明为volatile,这样可以确保在printThread线程中读取flag变量时,能够立即看到toggleThread线程对flag变量的修改。这样就能保证printFlag()方法中打印的flag值是及时更新的。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27