更新时间: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值是及时更新的。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19