java并发1--volatile关键字

来源:互联网 发布:xampp php版本切换 编辑:程序博客网 时间:2024/06/05 03:01

volatile关键字:作用是使变量在多个线程间可见(final也是的)


未使用volatile关键字的代码:

public class RunThread extends Thread{/** * volatile关键字,当变量 * --isRunning用来控制run()中循环的结束,这里没有加volatile的话,rt线程中的isRunning不会改变 * * * jdk5后对每一个线程加了一个内存空间,装主内存中的引用变量,所以isRuning在rt线程中依然是true,即使主线程将isRunning改为true。 *//**volatile*/private volatile  boolean isRunning = true;private void setRunning(boolean isRunning){this.isRunning = isRunning;}public void run(){System.out.println("进入run方法..");int i = 0;while(isRunning == true){//..}System.out.println("线程停止");}public static void main(String[] args) throws InterruptedException {RunThread rt = new RunThread();rt.start();Thread.sleep(1000);rt.setRunning(false);System.out.println("isRunning的值已经被设置了false");}}


分析:

打印结果:一直死循环



使用volatile关键字后打印结果:rt线程会停止


0 0
原创粉丝点击