![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/524c42f6d7e82082dea67fe802acfa00.png)
导致并发问题的原因由于违反了原子性、可见性、有序性。可用如下方案解决:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a38acb8fb6161ddf800617f8926f4ffb.png)
1、保证原子性
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/77e650b4b9effeac56ffe7c36390ed37.png)
1、使用悲观锁synchronized或者AQS里的lock
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5b380fb41e4931a1c8a82a8db47f164a.png)
2、保证可见性
保证内存的可见性,即让一个线程对共享的修改对另一个线程可见。
1、使用volatile修饰共享变量
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ddb5b40174f061e2167798432538fa74.png)
3、保证有序性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rAkOf8za-1684828923222)(image-20230523154910682.png)]
1、使用volatile禁止指令重排序
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0ae9281b4475d5a560a8b7b9dc412c62.png)