valotile java_Java Collection类中modcount为什么不用valotile修饰?

JDK-6625725 (coll) modCount should not be volatileCollections use a modCount field to track changes to data structures, so they can throw ConcurrentModificationException if another thread unexpectedly modifies the collection (rather than corrupting the data and carrying on).

Some collections mark modCount as volatile; some do not. Since the modCount mechanism comes with no guarantees, and users of single-threaded collections do not expect to pay the (high) price of a volatile write on every modification operation, the volatile modifier should be removed.

Here are the uses of volatile to be removed:

./java/util/HashMap.java:177: transient volatile int modCount; ./java/util/IdentityHashMap.java:176: private transient volatile int modCount; ./java/util/WeakHashMap.java:185: volatile int modCount;

简单来说就是没必要,如果用户是单线程的,volatile 写操作代价太大了。

而且如果没有正确modify的话 典型如 一个线程在遍历,另一个线程在修改这种情况,我们会抛出ConcurrentModificationException 来提示用户修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值