首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
tomatomaze
获赞
0
粉丝
0
关注
4
看过 TA
2
男
集美大学
2016
Java
IP属地:上海
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑tomatomaze吗?
发布(14)
评论
刷题
收藏
tomatomaze
关注TA,不错过内容更新
关注
2021-07-27 19:07
已编辑
集美大学 Java
为什么volatile修饰的i++是线程不安全的?
volatile可以保证可见性,那么多线程情况下,线程们也总是可以从主存中拿到最新的值,那为什么还是线程不安全?哪里出了问题? 我再把问题细化一下:首先i++不是原子操作。他分成三个部分,我简称其为S1,S2,S3。 S1:线程将i的值从主存中加载至cache S2:CPU从cache中获取i的值并计算 S3:线程将计算好的i的值从cache写入主存 那么在没有添加volatile时,显然i++是不安全的。例如线程T1,T2,分将i从0加到1准备写入主存的时候,可能T1线程先写入了,但是T2线程不知道,也写入了,会造成写覆盖,所以线程不安全。 但是加了...
今晚打老虎嘛:
在多线程的情况下,一个线程修改了i的值,由于缓存一致性协议,其他的线程获取的i的值会失效。但是,可能会出现这么一种情况。在这个线程修改i的值的同时,其他线程已经把i从缓存行中加载到了cpu寄存器,缓存一致性协议只对缓存行有效,对寄存器不起作用。所以会继续执行i++的操作。最后导致线程安全问题。
0
点赞
评论
收藏
分享
2020-09-07 13:53
集美大学 Java
学习
2020.09.07 在牛客打卡12天!
0
点赞
评论
收藏
分享
2020-09-03 08:45
集美大学 Java
写写leetcode
2020.09.03 在牛客打卡11天!
0
点赞
评论
收藏
分享
2020-09-02 15:30
集美大学 Java
学习
2020.09.02 在牛客打卡10天!
0
点赞
评论
收藏
分享
2020-08-27 22:31
集美大学 Java
学习
2020.08.27 在牛客打卡9天!
0
点赞
评论
收藏
分享
2020-08-26 08:42
集美大学 Java
开始搬砖
2020.08.26 在牛客打卡8天!
0
点赞
评论
收藏
分享
2020-08-24 20:28
集美大学 Java
面试题
2020.08.24 在牛客打卡7天!
0
点赞
评论
收藏
分享
2020-08-20 08:45
集美大学 Java
看面试题
2020.08.20 在牛客打卡6天!
0
点赞
评论
收藏
分享
2020-08-18 14:22
集美大学 Java
视频学习
2020.08.18 在牛客打卡5天!
0
点赞
评论
收藏
分享
2020-08-17 10:35
集美大学 Java
再接再厉
2020.08.17 在牛客打卡4天!
0
点赞
评论
收藏
分享
2020-08-13 21:25
集美大学 Java
正在学习写Spring cloud项目
2020.08.13 在牛客打卡3天!
0
点赞
评论
收藏
分享
2020-08-12 16:19
集美大学 Java
良好的开端
2020.08.12 在牛客打卡2天!
0
点赞
评论
收藏
分享
2020-08-12 23:09
已编辑
集美大学 Java
每日知识点整理(1)
2020年8月11-12日 目的:整理错题,相关知识点学习 知识点1:冒泡排序 1.原理:比较两个相邻的元素,将值大的元素交换到右边 2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 (1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。 (2)比较第2和第3个数,将小数 放在前面,大数放在后面。 ...... (3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成 (4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一...
0
点赞
评论
收藏
分享
2020-08-11 13:56
集美大学 Java
菜鸡的开始
2020.08.11 在牛客打卡1天!
0
点赞
评论
收藏
分享
1
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务