一、Volatile关键字
作用:
当多个线程进行操作共享数据时,可以保证内存中的数据可见,即为一个线程对数据的修改对另外一个线程来说是可见的。相较于 synchronized 是一种较为轻量级的同步策略。但不保证互斥可原子性。
二、简单使用
package com.duchong.juc; public class TestVolatile { public static void main(String[] args) { ThreadDemo td = new ThreadDemo(); new Thread(td).start(); while(true){ if(td.getFlag()){ System.out.println("------------------"); break; } } } } class ThreadDemo implements Runnable { private volatile boolean flag = false; @Override public void run() { try { Thread.sleep(200); } catch (InterruptedException e) { } flag = true; System.out.println("flag=" + getFlag()); } public boolean getFlag() { return flag; } }