首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective C中的‘NonAtomic`在Java中的等价物是什么?

Objective C中的‘NonAtomic`在Java中的等价物是什么?
EN

Stack Overflow用户
提问于 2014-03-27 07:42:56
回答 1查看 297关注 0票数 0

我的猜测是,它将类似于volatile关键字,后者在Java语言中提供了关系、可见性和原子值赋值(如果类型>32位,则为long)。是吗?

(编辑:我的猜测是atomic属性类似于volatile,而不是nonatomic,但事实证明它不是)

EN

回答 1

Stack Overflow用户

发布于 2014-03-27 07:52:47

根据this article的说法,Objective C中的“原子”类似于Java中的synchronized变量,因此它不能被两个线程同时更改。nonatomic正好相反,这意味着变量不是synchronized,因此可以由多个线程同时更改。

关于volatile,根据wikipedia

Java编程语言也有volatile关键字,但它的用途稍有不同。当应用于一个字段时,Java易失性保证:

  • (在所有版本的Java中)对易失性变量的读写都有一个全局排序。这意味着访问易失性字段的每个线程将在继续之前读取其当前值,而不是(潜在地)使用缓存值。(然而,不能保证易失性读写和常规读写的相对顺序,这意味着它通常不是Java5或更高版本的有用线程)易失性读写建立了一种事前发生的关系,就像获取和释放互斥锁一样。使用易失性的
  • 可能比锁更快,但在某些情况下不起作用。在Java5中,对易失性有效的情况范围进行了扩展;特别是,双重检查锁定现在可以正确工作。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22675395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档