栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

AtomicInteger中的“比较并设置”如何工作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AtomicInteger中的“比较并设置”如何工作

原子对象利用Compare和Swap机制使它们成为原子-
即可以保证该值 指定的 ,并且现在 是新值。

您发布的代码不断尝试将当前值设置为比以前大一的值。请记住,另一个线程也可能执行了

get
并且正在尝试设置它。如果两个线程相互竞争以更改值,则增量之一可能会失败。

请考虑以下情形:

  1. 线程1调用
    get
    并获取值
    1
  2. 线程1计算
    next
    2
  3. 线程2调用
    get
    并获取值
    1
  4. 线程2计算
    next
    2
  5. 两个线程都尝试写入值。

现在,因为原子能的- 只有一个线程会成功 ,对方将收到

false
来自
compareAndSet
和再绕过去。

如果不使用此机制,则两个线程都很有可能增加该值,从而导致实际上仅执行一次增量。

for(;;)
只有在许多线程同时写入变量的情况下,令人困惑的无限循环才会真正循环。在非常重的负载下,它可能会循环几次,但是应该很快完成。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470104.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号