Java中volatile关键字的最全总结
2024-10-07 04:43:33
转载至: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可以防止指令重排,但是有条件,具体看上面链接。
最新文章
- GJM : Unity3D 高通Vuforia SDK AR 开发
- 基于redis实现可靠的分布式锁
- android删除无用资源文件的python脚本
- Android反编译(一)之反编译JAVA源码
- 【爬虫】python之BeautifulSoup用法
- angularjs 获取地址传参
- Linux 禁用笔记本触摸板
- 【Java】Socket+多线程实现控制台聊天室
- mybatis系列-01-JDBC
- VS2015企业版本(安装包+key)
- 使用httperrequest,模拟发送及接收Json请求
- JavaScript(1)——变量、函数声明及作用域
- 目标URL存在跨站漏洞和目标URL存在http host头攻击漏洞处理方案
- Win32-Application的窗口和对话框
- BUG在线上环境中出现的原因总结
- zabbix系列 ~ linux监控相关
- 如何修改maven的默认jdk版本
- 20180309 - C# demo - 1
- ES6知识整理(2)--变量的解构赋值
- Docker 为 ASP.NET Core Web 应用程序生成 Docker 映像,创建并运行多个容器