首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
追求谁谁谁
2017-04-23 16:21
北京邮电大学 Java
关注
已关注
取消关注
java volatile询问
如果两个线程同时写volatile变量会出现什么问题?一个面试官问我的,求大神解答
#Java工程师#
提示
全部评论
推荐
最新
楼层
sillyeye
西南石油大学 Java
volatile能保证原子性,保证的是对64位long double简单赋值操作和读操作的原子性。但是复杂操作例如自增不能保证。但是你不能说没有保证自增volatile就不具有原子性,因为自增也是由3个原子性操作相加的符合操作。类比的你可以去看collections类同步synchronizedMap过后的map,他的put get remove一样是原子性的,但是如果你调用两个原子性操作就会出错。比如containsKey之后进行remove,并发时会出错的。
点赞
回复
分享
发布于 2017-04-23 19:02
广东周润发
阿里巴巴_智能信息_Android
内存屏障
点赞
回复
分享
发布于 2017-04-23 16:25
小度小度
南京大学 Java
volatile不能保证线程安全
点赞
回复
分享
发布于 2017-04-23 16:27
李香兰
北京理工大学
不可能同时写,当某个线程a往主存写的时候,会锁住cpu缓存行,导致另一个线程b的相同变量无法同时写入与读取,当a写完时,由happen-before规则,b线程会重新读取主存最新的值,也就是说,volatile是轻量级的synchronized,不会导致线程切换。
点赞
回复
分享
发布于 2017-04-23 16:38
牛客2329558号
南京大学 Java
volitile能保证读和写的原子性
点赞
回复
分享
发布于 2017-04-23 17:14
牛客2692795号
厦门大学
volatile 不能保证原子性!!!绝对不能。认为能的是对java理解很大的常见误区。 volatile 保证的是内存可见性。也可用来防止指令重排序(就是上面有人提到的内存屏障,也是happens-before的一条原则)
点赞
回复
分享
发布于 2017-04-23 18:23
就只面了腾讯一家公司
北京师范大学 Java
可能读到被修改之前的值。因为读到缓存的数据了。
点赞
回复
分享
发布于 2017-04-23 18:37
layman
汕头市业余大学
楼主可以看看一位大神海子的一篇博客 volitale讲的很详细
点赞
回复
分享
发布于 2017-04-23 20:46
风的方向zlw
西安电子科技大学 Java
个人看法:如果写操作是i++这类的操作是会出现并发问题的,因为自增操作会分解成三个操作完成,这个大家都知道;如果写操作是i = 1这类赋值操作就不会有问题,因为赋值操作在jvm层面也是原子操作,加上volatie实现的可见性,就可以保证多个线程对这个变量的修改一定会有个先后顺序,最后这个变量的值就是最后执行的线程修改的值。
点赞
回复
分享
发布于 2017-04-23 21:50
GoOrNotGo!
中山大学 Java
对于基本变量的赋值和读取能保证原子性,其他不行。既然问的是使用了volatile,那我们的前提就是使用正确的情况下,根据happen-before原则,是不会有问题的,不可能是同时
点赞
回复
分享
发布于 2017-04-23 23:28
拖仔
东北大学 C++
至少在cpp里,不能保证线程安全…只是禁止了编译器的优化工作…
点赞
回复
分享
发布于 2017-04-23 23:55
mafee
中国传媒大学 Java
内存可见性和禁止指令重排序
点赞
回复
分享
发布于 2017-04-24 07:38
还没有回复哦~
相关推荐
11-21 21:13
已编辑
门头沟学院 前端工程师
给正在秋招中枯燥的大家找个乐子听听吧,不被理解真的心寒
楼主25届,bg双非非科班前端,当时入坑前端是因为对前端比较感兴趣,其实接触挺早的,在大一下学期就知道前端了,然后大一暑假学了个皮毛,大二满课,基本没怎么学,学过的也忘了不少,现在想想是真的后悔,早点认清形势好好学也不至于像现在这样这么苦逼。 然后到了大二暑假,开始决定从事前端,就开始认真起来学习了,准备大三找实习。从大二暑假到今天吧(除去暑假实习的两个多月),基本上没有怎么休息过,大学生活也没有好好体验多少,等于同时在学两个专业的东西,大三的课程也很多,鼠鼠又是那种没有什么天赋的人,只能靠挤时间来多学多练,但是就是因为对前端兴趣支撑我到现在,学习的时候除了背八股会枯燥一些,其他时间都感...
我已成为0offer的糕手:
教你,你把无锡那个案子转给他,然后不说话,让他自己体会去
点赞
评论
收藏
分享
11-20 13:35
广东白云学院 数据运营
校招入职后第一次后悔选错offer
秋招的时候一直纠结两个offer,最后选择了一家互联网大厂 大厂薪资不如另外一个科技公司,离家也远 当时想着毕业第一份工作不能只图钱 奔着大厂的团队氛围、高福利、大title来的 实际上每天加班,遇到pua老板,工资也低 现在非常懊恼希望可以重回去年秋招时刻,重新选择结果会不会不一样,我知道不能美化没有走过的那条路,但是后悔都情绪一直在
立马来offer:
去哪个大厂了啊,其实你选了小公司,遇到不开心的也会后悔没有选择大平台。别美化小公司了,至少大厂有平台,有二次选择的能力
如果再来一次,你还会选择这个工作吗?
点赞
评论
收藏
分享
11-14 17:28
已编辑
门头沟学院 Java
26届日常实习找不到
要么初筛挂,要么部门筛挂,是因为相关项目太少涉及知识点太简单了吗😭友友们给点建议 #日常实习#
点赞
评论
收藏
分享
10-22 19:18
上海大学 后端
秋招现状
jopajhhdjwnqk:
水印都叠杀人书了
点赞
评论
收藏
分享
11-23 14:55
小红书_社区技术部_前端开发(实习员工)
9.24古茗一面
今年没想到卷成这样,面试表现挺好的,但是问多久出结果,说是候选人特别多,可能要很久,然后就一直没给后续,估计是进池子了。自我介绍如何了解到的我们公司心动的复杂权限场景以及性能优化,按钮权限,菜单权限,接口权限都是怎么实现的ci/cd是什么大文件的分片上传怎么实现的如何保证每一片的完整性文件传输某一片失败的该怎么办为什么这样子设计介绍一下promisetry catch能否监听到promise的错误,为什么promise.race的特点promise还有什么方法hash路由与history路由的区别为什么history需要服务端配置入口地址小程序开发的了解前端浏览器缓存mvc和mvvm是什么什么...
查看26道真题和解析
面经烤面筋
点赞
评论
收藏
分享
点赞成功,聊一聊 >
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
招聘动态
查看更多
字节跳动
2025校园招聘
阿里云管培生
2025届校园招聘
快手Star
2025届招聘
快手
销售类投递专区
全站热榜
1
...
从露宿街头到百万级种子轮融资——我的大学时代经历了什么
3.2W
2
...
字节20多面终究一场空
1.7W
3
...
C++选手秋招总结
1.4W
4
...
华为电话oc了
1.1W
5
...
不装了!牛客就是OFFER判官
9549
6
...
泡出来啦
9368
7
...
秋招圆满结束
8738
8
...
阿里云管培生开奖了
7857
9
...
总结一下鼠鼠找实习的历程
6673
10
...
爱信等
6495
正在热议
#
25届秋招总结
#
340898次浏览
3250人参与
#
我的实习求职记录
#
6077737次浏览
83606人参与
#
百度开奖
#
192141次浏览
1224人参与
#
地方国企笔面经互助
#
4802次浏览
12人参与
#
职场吐槽大会
#
89724次浏览
738人参与
#
选完offer后,你后悔学本专业吗
#
22379次浏览
160人参与
#
阿里云管培生offer
#
39451次浏览
566人参与
#
ai智能作图
#
1166次浏览
32人参与
#
运营商笔面经互助
#
91931次浏览
1329人参与
#
海康威视求职进展汇总
#
401596次浏览
3414人参与
#
如果有时光机,你最想去到哪个年纪?
#
23352次浏览
464人参与
#
国企还是互联网,你怎么选?
#
89696次浏览
697人参与
#
风评不好的公司,你会去吗?
#
20514次浏览
94人参与
#
如何一边实习一边秋招
#
998568次浏览
12679人参与
#
腾讯求职进展汇总
#
197743次浏览
1650人参与
#
银行笔面经互助
#
84226次浏览
887人参与
#
第一份工作应该选择高薪还是大平台
#
88701次浏览
590人参与
#
bilibili求职进展汇总
#
33693次浏览
360人参与
#
许愿池
#
215236次浏览
2535人参与
#
上班苦还是上学苦呢?
#
77904次浏览
721人参与
#
正在实习的你,几点下班
#
53816次浏览
397人参与
#
国央企薪资爆料
#
13087次浏览
96人参与
牛客网
牛客企业服务