2019-03-29 15:42:46 1475浏览
今天扣丁学堂Java培训老师给大家介绍一下关于Java中的关键字volatile的详细介绍,首先volatile关键字经常用来修饰变量。不过,volatile本身很容易被误用。在介绍volatile关键字原理前,我们首先要了解JVM运行时的内存分配逻辑。
public class VolatileTest implements Runnable{ //volatile private static boolean flag = false; @Override public void run() { while (!flag){ System.out.println(Thread.currentThread().getName() +"执行中"); } System.out.println(Thread.currentThread().getName() +"执行完毕"); } //main线程 public static void main(String[] args) throws InterruptedException { new Thread(new VolatileTest(), "支线程Volatile").start(); Thread.sleep(1000); flag = true; } }
private volatile int i; i++;i++这个操作涉及到获取值,自增和赋值3部分。无法直接完成。上面想要以volatile来实现原子性的写法是错误的。
int a = 4; int b = 5; int c = a + b;
//线程1: context = loadContext(); inited = true; //线程2: while(!inited ){ } doSomething(context);
【关注微信公众号获取更多学习资料】 【扫码进入Python全栈开发免费公开课】