首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-20 17:58
中南大学 用户运营
秋招被确诊为骗子
三大运营商都投了,中国移动的宣传标语:小心电信诈骗,中国电信的宣传标语:小心移动支付陷阱,中国联通的宣传标语:谨防移动支付中的电信诈骗
投递中移(苏州)软件技术有限公司等公司10个岗位 >
秋招被确诊为……
点赞
评论
收藏
分享
11-12 10:25
武汉晴川学院 Java
这家公司咋样啊 哥姐们
我见java多妩媚:
大外包
点赞
评论
收藏
分享
09-30 20:37
门头沟学院 前端工程师
还有谁!
就问谁有我久
我即大橘:
耐泡王
点赞
评论
收藏
分享
11-20 15:24
真有趣游戏_技术开发部_服务端工程师(准入职员工)
真有趣游戏内推真有趣面经
一面:自我介绍面试分为Unity相关知识:1.对Unity了解多少?2.Unity开发有多久的经验?3.Unity的生命周期,及每个部分的作用4.如何控制脚本的执行顺序?5.为什么物理效果放到FixedUpdate里面去运行?6.动画状态机中有哪些组件,以及如何使用7.如何去实现分层的动画效果?8.遮罩有哪些属性?9.用动画机实现八方向的移动10.物理碰撞有哪些接口11.rigedBody需要怎么挂才能生效?C#相关:1.GC的简要原理以及如何使用?2.怎么防止过渡的GC产生?3.怎么去设计一个对象池?(用具体的程序逻辑、数据结构、对外提供哪些接口)项目经历:1.在3D空间下怎么描述点A到点B...
点赞
评论
收藏
分享
点赞成功,聊一聊 >
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
招聘动态
查看更多
字节跳动
2025校园招聘
阿里云管培生
2025届校园招聘
快手Star
2025届招聘
快手
销售类投递专区
全站热榜
1
...
从露宿街头到百万级种子轮融资——我的大学时代经历了什么
3.9W
2
...
字节20多面终究一场空
1.8W
3
...
C++选手秋招总结
1.3W
4
...
华为电话oc了
1.1W
5
...
泡出来啦
1.0W
6
...
秋招圆满结束
9178
7
...
阿里云管培生开奖了
8475
8
...
不装了!牛客就是OFFER判官
8288
9
...
总结一下鼠鼠找实习的历程
6802
10
...
爱信等
6736
正在热议
#
25届秋招总结
#
342149次浏览
3275人参与
#
我的实习求职记录
#
6078354次浏览
83615人参与
#
阿里云管培生offer
#
39710次浏览
569人参与
#
地方国企笔面经互助
#
4835次浏览
12人参与
#
职场吐槽大会
#
89785次浏览
740人参与
#
选完offer后,你后悔学本专业吗
#
22457次浏览
160人参与
#
百度开奖
#
192985次浏览
1231人参与
#
ai智能作图
#
1281次浏览
34人参与
#
运营商笔面经互助
#
91981次浏览
1329人参与
#
海康威视求职进展汇总
#
401688次浏览
3414人参与
#
如果有时光机,你最想去到哪个年纪?
#
23494次浏览
469人参与
#
国企还是互联网,你怎么选?
#
89767次浏览
697人参与
#
风评不好的公司,你会去吗?
#
20526次浏览
94人参与
#
如何一边实习一边秋招
#
998669次浏览
12682人参与
#
腾讯求职进展汇总
#
197780次浏览
1650人参与
#
银行笔面经互助
#
84282次浏览
888人参与
#
第一份工作应该选择高薪还是大平台
#
88732次浏览
590人参与
#
bilibili求职进展汇总
#
33726次浏览
360人参与
#
许愿池
#
215265次浏览
2536人参与
#
上班苦还是上学苦呢?
#
78317次浏览
724人参与
#
正在实习的你,几点下班
#
53838次浏览
397人参与
#
国央企薪资爆料
#
13231次浏览
98人参与
牛客网
牛客企业服务