为了账号安全,请及时绑定邮箱和手机立即绑定

java多个线程写同一个数组的不同部分是线程安全的吗?

java多个线程写同一个数组的不同部分是线程安全的吗?

扬帆大鱼 2019-01-16 23:40:38
比如我有一个10个元素的int型数组,线程A修改下标为0的元素,线程B修改下标为5的元素。这样会不会引起线程安全的问题呢? 我个人认为不会出现问题,但是是危险操作。
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

线程安全对应是的数据争用,按照官方说法是,没有经过happens-Before关系排序的数据争用就会出现 不同步现象。
鉴于你操作的是一个数组的不同部分,多个线程没有同时对同一个数组元素进行读写操作(也就是一个线程读,另一个线程同时写),哪怕没有经过正确的同步,也不会出现数据争用(data race),所以是线程安全的。

查看完整回答
反对 回复 2019-03-01
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

当然没问题啊,不过你要在线程访问每一个元素的时候加上同步,防止多个线程操作同一个元素,ConcurrentHashMap就是这么干的啊。

查看完整回答
反对 回复 2019-03-01
?
MYYA

TA贡献1868条经验 获得超4个赞

JVM spec要求int和引用的读写是原子的 (long和double不要求)

不过什么叫“线程安全”或“危险”呢?

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 570 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号