![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 56
weixin_39139822
个人自学用,无参考价值
展开
-
多线程环境下共享变量可见性
多线程环境下共享变量的可见性体现: 线程A \线程B 同时操作共享变量c 会出现线程A更新了变量c的值,但是线程B读取不到更新后的值 Java层面通过提供的volatile指令来解决(用volatile共享变量,即可保证共享变量的修改可以立即在其他线程可见) 为什么会出现可见性问题:底层cpu高级缓存优化、编译器优化、指令重排序等导致代码指令执行的可见性和有序性 **JMM JAVA MEMORY MODULE **:(java 内存模型)java内存模型定义了共享内存中多线程程序读写操作的规范:在虚拟机中原创 2022-02-06 17:46:48 · 297 阅读 · 0 评论 -
并发安全之同步锁
线程安全问题,本质多线程环境下代码执行的原子性、可见性、有序性得到保证 synchronized 可以保证原子性、可见性、有序性 例:两个线程同时执行 count ++ count++由多条cpu指令组: 1.线程从内存加载count到寄存器 2.执行count +1操作 3.把操作结果加载到内存 多线程环境下由于cpu时间片分配,导致随时会有线程上下文切换可能,这会导致多个线程对共享变量进行count ++ 操作时出现数据混乱问题 用synchronized 关键字给这个代码块加锁,可以保证count +原创 2022-02-06 09:22:37 · 1968 阅读 · 0 评论