加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

你的Java并发程序Bug,100%是这几个原因造成的

发布时间:2019-10-30 17:38:55 所属栏目:建站 来源:平头哥
导读:可见性问题 可见性是指一个线程对共享变量进行了修改,其他线程能够立马看到该共享变量更新后的值,这视乎是一个合情合理的要求,但是在多线程的情况下,可能就要让你失望了,由于每个 CPU 都有自己的缓存,每个线程使用的可能是不同的 CPU ,这就会出现数

线程1 所在的 CPU 执行完前两条指令后,执行权被 线程2 所在的 CPU 抢占了,这时候线程1 所在的 CPU 执行挂起等待再次获取执行权,线程2 所在的 CPU 获取到执行权之后,先从内存中读取 count,此时内存中的 count 还是 1,线程2 所在的 CPU 恰好执行完了这三条指令,线程2 执行完之后内存中的 count 就等于 2 了,这时候线程1 再次获取了执行权,这时候线程1 只剩下最后一条将 count 写回内存的命令,执行完之后,内存中的 count 的值还是 2 ,并不是我们预计的 3。

有序性问题

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读