volatile 關(guān)鍵字 使一個變量在多個線程中可見 (只能保證可見性 不能保證原子性)
使用volatile關(guān)鍵字,會讓所有的線程都會讀到變量的修改值。
在一個線程里面調(diào)用了成員變量的話,并修改的這個成員變量。當(dāng)Cup非空閑的時候別的線程就不會知道有個線程修改了這個成員變量,如果加了volatile 關(guān)鍵字 當(dāng)被修飾的這個變量發(fā)生改變的時候就會通知所有的線程刷新他們的緩存區(qū)對這個成員變量進(jìn)行更新。
public class Test_ implements Runnable{
volatile boolean flag = true;
@Override
public void run() {
while(flag){
}
System.out.println("線程結(jié)束----");
}
public static void main(String[] args) {
Test_ t = new Test_();
new Thread(t).start();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
t.flag =false;
}
}