转载至:https://blog.csdn.net/u012723673/article/details/80682208

关于volatile很重要的一点:

它保证了可见性,即其他线程对volatile的操作本线程可以马上得知。

/*
* @author VX:18269399343
*/ public class VolatileTest {
private volatile static int num = 0; //加了volatile修饰后线程不能在自己的工作内存缓存num,每次直接和内存打交道,volatile保证了可见性:其他线程对volatile变量的修改本线程马上知道
public static void main(String[] args) throws InterruptedException {
new Thread(()->{
while(num==0){ }
}).start();
Thread.sleep(2000);
num = 1;
}
}

不加volatile修饰会在子线程内死循环,加了volatile后主线程将会修改volatile的值,子线程会马上得到最新值。

volatile可以防止指令重排,但是有条件,具体看上面链接。

最新文章

  1. GJM : Unity3D 高通Vuforia SDK AR 开发
  2. 基于redis实现可靠的分布式锁
  3. android删除无用资源文件的python脚本
  4. Android反编译(一)之反编译JAVA源码
  5. 【爬虫】python之BeautifulSoup用法
  6. angularjs 获取地址传参
  7. Linux 禁用笔记本触摸板
  8. 【Java】Socket+多线程实现控制台聊天室
  9. mybatis系列-01-JDBC
  10. VS2015企业版本(安装包+key)
  11. 使用httperrequest,模拟发送及接收Json请求
  12. JavaScript(1)——变量、函数声明及作用域
  13. 目标URL存在跨站漏洞和目标URL存在http host头攻击漏洞处理方案
  14. Win32-Application的窗口和对话框
  15. BUG在线上环境中出现的原因总结
  16. zabbix系列 ~ linux监控相关
  17. 如何修改maven的默认jdk版本
  18. 20180309 - C# demo - 1
  19. ES6知识整理(2)--变量的解构赋值
  20. Docker 为 ASP.NET Core Web 应用程序生成 Docker 映像,创建并运行多个容器

热门文章

  1. 添加了两个IP
  2. POJ3415Common Substrings(后缀自动机)
  3. python连接mysql操作(1)
  4. mybatis解析和基本运行原理
  5. C# 之抽象类
  6. 洛谷 P2473 [SCOI2008]奖励关 ( 期望DP )
  7. Nowcoder Removal ( 字符串上的线性 DP )
  8. 暑假集训 #2 div1 I - Lada Priora 精度处理
  9. FFT-Matlab初步实现
  10. python基础之流程控制