volatile:一个线程修改了某一个共享变量的值,其他线程也是否能够立即知道这个修改的

1.主要是让该“变量”在多个线程中可见,在java中每一个线程都有一块自己的工作区,其中就存放着所有线程“共享变量”的变量值的拷贝、复制。
2.当线程执行时,他在自己的工作内存区操作的这些变量,为了存取这些变量,一个线程通常会先去获取锁,并去除它的内存工作区,把这个共享变量从所有线程的
  的工作区拿到他自己的工作内存区,当自己操作完成后,解锁并把该变量的值重新“刷新写入”到共享内存中。
3.线程的操作:使用、赋值、装载、存储、锁定、解锁
4.主内存可以执行:read、wrlte、lock、unlock 原子性操作
5.强制线程去主内存中(共享变量)去读取变量,而不是去此案的工作内存区取出、从而实现了多个线程的变量可见性,满足线程安全。
  1. package demo1;
  2. /**
  3. * Created by liudan on 2017/7/2.
  4. */
  5. public class MyThread_volatile extends Thread {
  6. private volatile boolean isRunning = true;
  7. public void setRunning(boolean running) {
  8. isRunning = running;
  9. }
  10. @Override
  11. public void run() {
  12. System.err.println("进入 run 方法");
  13. while (isRunning==true){
  14. /* System.err.println("run 方法操作中.................");*/
  15. }
  16. System.err.println("停止run 方法");
  17. }
  18. public static void main(String[] args) throws InterruptedException {
  19. MyThread_volatile thread_volatile = new MyThread_volatile();
  20. thread_volatile.start();
  21. Thread.sleep(3000);
  22. thread_volatile.setRunning(false);
  23. System.err.println("setRunning 方法");
  24. Thread.sleep(1000);
  25. System.err.println("结束:"+thread_volatile.isRunning);
  26. }
  27. }
  28. 输出:
  29. 进入 run 方法
    setRunning 方法
    停止run 方法
    结束:false

最新文章

  1. 网络问卷调查js实现代码
  2. Ignite安装配置——上篇
  3. webstorm 10 出现不能run cordova项目
  4. 快销品 车销批发管理手持终端PDA系统 打印开单 入库 库存 盘点多功能一体
  5. 几种server模型
  6. Poj OpenJudge 百练 1860 Currency Exchang
  7. JDBC连接SQL server与ADO.NET连接Sql Server对比
  8. ARMv8 Linux内核head.S源码分析
  9. cocos2d-x -- 渠道SDK【棱镜】接入(1)
  10. Struts2(result 流 )下载
  11. shell编程其实真的很简单(四)
  12. Java 内部类的意义及应用
  13. CentOS6系列系统启动常见故障排查与解决方法
  14. 如何在eclipse中快速debug到想要的参数条件场景下
  15. Android的Device File Explorer刷新文件
  16. php循环删除文件夹和目录
  17. CF1010D Mars rover [位运算,DP]
  18. 80端口被系统进程PID-4占用解决办法
  19. Android 中如何从一个App启动另外一个App(如启动支付界面、启动地图界面、应用商场下载App等场景)
  20. day 93 Django学习之django自带的contentType表

热门文章

  1. Vugen 和controller 中的run-time setting区别
  2. ffmpeg 编译graph2dot
  3. ref:一种新的攻击方法——Java Web表达式注入
  4. [Codeforces50C]Happy Farm 5 凸包
  5. [BZOJ3676][APIO2014]回文串(Manacher+SAM)
  6. PHP链接sqlserver出现中文乱码
  7. Codeforces Beta Round #10 D. LCIS 动态规划
  8. 2015 UESTC 数据结构专题C题 秋实大哥与快餐店 字典树
  9. 【弱省胡策】Round #0 Flower Dance DP
  10. Swift 闭包反向传值