栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java并发问题的三要素

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java并发问题的三要素

线程相关的笔记 java并发问题的三要素 可见性
//线程1执行的代码
int i= 0;
i=10;
//线程2执行的代码
j=i;

当线程1执行i赋值操作时是先在内存中,然后才会写入主存,此时,线程2会在主存中读取i的值,但线程1没有写到主存,所以读取到的值是i=0,这就是可见性问题。

原子性

就是一组操作,要么全部执行,要么全部都不执行。

int i= 0;
//线程1
i+=1;
//线程2
i+=1;

i+=1,执行顺序是,把变量i从内存读取到cpu寄存器进行运算,cpu执行i+1操作,将结果写入内存。由于cpu线程切换的操作,线程2在线程1执行第一步就抢占资源先执行了,然后就回到线程1执行后续步骤,就会导致写入内存的是2。

有序性:指令重排

就是在程序运行的时候,并没有按照人为安排的顺序来执行,为了提高性能,内部进行了指令重排的操作,像有编译器优化的重排序、指令级并行的重排序,内存系统的重排序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/985678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号