![444807c8e7fb2025aae5a240dfe5dfa9.png](https://i-blog.csdnimg.cn/blog_migrate/6682ef4915bb0a87ef4c379b1ed9d8b7.png)
NO.1
January
11.2021
背景
当多个人同时抢仅剩一张机票时,如何保证系统不会出错?
此时引出多线程的三大属性:
可见性:当一个人抢到机票之后系统会通知其他人;
有序性:某个人先进入系统,而后面的人进入系统时不会插到他前面去;
原子性:表面的购票只是点击购票按钮,实际底层的内容是可分解的成很多原子操作,比如变量在内存中的读写;
围绕着这两大属性(原子性仍待研究)
讲解volatile是如何实现的
一、有序性
背景知识:
1.普通变量修改后store、write操作的发生时间是不确定的(store是将修改的内存存到缓存中、write是将修改的内容存到主存中,先store再write);
2.happens-before规则是判断数据是否存在竞争、线程是否安全的主要依据(还有需要探讨的内容,目前先简单的介绍);
3.volatile变量的读写操作会有内存屏蔽;
<