线程 invalid use of void expression_多线程学习之volatile关键字

本文探讨多线程环境下volatile关键字的作用,重点解释其如何确保可见性和有序性。通过JMM内存模型,分析volatile的内存屏障和缓存一致性协议,展示其在防止数据不一致和内存操作重排序中的关键角色。
摘要由CSDN通过智能技术生成
444807c8e7fb2025aae5a240dfe5dfa9.png

NO.1

January

11.2021

背景

当多个人同时抢仅剩一张机票时,如何保证系统不会出错?

此时引出多线程的三大属性

可见性:当一个人抢到机票之后系统会通知其他人;

有序性:某个人先进入系统,而后面的人进入系统时不会插到他前面去;

原子性:表面的购票只是点击购票按钮,实际底层的内容是可分解的成很多原子操作,比如变量在内存中的读写;

围绕着这两大属性(原子性仍待研究)

讲解volatile是如何实现的

一、有序性

背景知识:

1.普通变量修改后store、write操作的发生时间是不确定的(store是将修改的内存存到缓存中、write是将修改的内容存到主存中,先store再write);

2.happens-before规则是判断数据是否存在竞争、线程是否安全的主要依据(还有需要探讨的内容,目前先简单的介绍);

3.volatile变量的读写操作会有内存屏蔽;

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值