volatile可见性案例-黑马

package com.mozq.demo.demo;

class Task implements Runnable{
//public boolean flag = false;//存在可见性问题,主线程无法监视到线程执行成功。
public volatile boolean flag = false; @Override
public void run() {
if(!flag){
System.out.println("执行任务");
}
flag = true;
System.out.println("任务执行完毕");
}
} public class HeiMaVolatileTest {
public static void main(String[] args) {
Task task = new Task();
new Thread(task).start();
while (true){
if(task.flag){
System.out.println("=success=");
}
}
}
}

运行结果

# 主线程获取的flag始终是false,不会打印success。
Connected to the target VM, address: '127.0.0.1:21030', transport: 'socket'
执行任务
任务执行完毕

最新文章

  1. x01.os.22: ubuntu 常用设置
  2. EF总结
  3. WORDPRESS开发(一)自定义页面显示分类目录
  4. oracle热点表online rename
  5. iOS技术框架构和更新版本的技术特性
  6. 关于ARM内核与架构的解释
  7. bzoj 1566: [NOI2009]管道取珠
  8. 敏捷冲刺每日报告--day2
  9. Docker安装rabbitmq
  10. 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)
  11. 一道有意思的找规律题目 --- CodeForces - 964A
  12. nginx的白名单
  13. 汉字 Unicode 编码范围
  14. Git 创建操作
  15. jenkins邮件配置----jenkins笔记(三)
  16. PHP根据秒计算持续时长
  17. 支撑大规模公有云的Kubernetes改进与优化 (3)
  18. C++,一些常用的知识点
  19. Mybatis框架插件PageHelper的使用
  20. win7局域网内共享文件夹及安全设置

热门文章

  1. 5分钟搞清楚Synchronized和Lock的概念与区别
  2. typeof 与 instanceof之间的区别
  3. CSRF与auth模块
  4. linux指令-date
  5. 深入理解this原理(JavaScript)
  6. 我也开源... React Native Messager
  7. canves做的时钟目前已经开源
  8. Xposed的新打开方式--Xpatch工作流程分析
  9. Python 之列表切片的四大常用操作
  10. 使用Condition