登录
|
注册
公司
标签
文章
搜索
经典指数
人人网
类别
公司
职位
年份
其他
添加
原因
删除
1025
浏览数
0
收藏数
int I = 0; I = i++; I = i++; 是线程安全的吗?如果不是,那它在JVM中是如何实现的?JDK中有哪个类可以实现这个目标又是线程安全的?这个类线程安全的原理是什么?
还没有评论
分享到:
举报
纠错
0
/
512字
选择纠错区域
题目内容有错
题目标签有错
提交纠错
切换
提交评论
请先
登录
后评论.
1 个答案
0
0
(1) 不是线程安全的。 (2) 实现方式:当我们进行i++工作的时候,分成了几步。1. 通过read指令读取主内存中值,传输到工作内存中。2. 通过load指令把通过read指令传输到工作内存中的值放入到工作内存的变量副本中。3.通过use指令把工作内存中变量副本的值传递给执行引擎。4. 执行 i+1 操作。5. 通过assign指令把 运算后的值传给 赋给工作内存中的变量。6. 通过store指令把工作内存中的变量的值传输给主内存中。7. 通过write指令把通过store传输过来的值写入到主内存的变量中。 (3)AtomicInteger类可以实现这个目标并且是线程安全的。 (4)安全原理:利用了硬件的支持。(不太记得了。)其实主要能把上面的实现流程变成一个原子操作即可。比如说,执行完 i+1 后,马上store(这也是volatile原理)。或者通过synchronized,或者加锁lock来实现。
还没有评论
举报
切换
提交评论
请先
登录
后评论.
撰写答案
提交回答
通往牛逼的路上,请先登录!
扫描后移动端查看本题
我也分享一个题目
×
登录
注册
找回密码
记住登录
登录
快速注册
直接第三方登录
×
保存答案