体现volatile关键字用法的Java代码
时间: 2024-05-01 12:19:22 浏览: 115
一文精通Java中的volatile关键字
下面是一个简单的例子,演示了如何使用Java中的volatile关键字:
```java
public class VolatileExample {
private volatile boolean flag = false;
public void setFlag(boolean value) {
this.flag = value;
}
public void doSomething() {
while (!flag) {
// do something
}
// continue doing something
}
}
```
在上面的例子中,我们声明了一个名为`flag`的布尔变量,并在其前面添加了`volatile`关键字来标记它是易变的。这意味着在多个线程之间共享此变量时,线程始终从主内存中读取此变量的最新值,而不是从本地线程缓存中读取。
在`doSomething`方法中,我们使用while循环来等待`flag`变量变为`true`。如果我们没有使用`volatile`关键字来标记`flag`变量,那么在不同线程之间共享此变量时,可能会存在缓存不一致的情况,导致某个线程看不到另一个线程对`flag`变量的修改,从而导致while循环无法退出。但是通过使用`volatile`关键字,我们可以确保所有线程都能够看到最新的`flag`变量值,从而避免出现这种问题。
阅读全文