gpt4 book ai didi

java - 原始类型和原子类型有什么区别?

转载 作者:行者123 更新时间:2023-12-04 01:42:31 25 4
gpt4 key购买 nike

许多编程语言规范都讨论了该语言的基本类型及其原子类型。在某些情况下,这些是单独提及的,而有些则将定义混合在一起。在阅读了一些资料后,我开始意识到这两个术语之间存在差异,但它似乎要么非常微妙,要么过于晦涩。

原子类型原始类型之间到底有什么区别?一个包含在另一个中吗?

最佳答案

区别在于原始类型(int 等)不是对象;尽管在 Java 中有与每个基本类型关联的类(Integerint 等)。

原子类型“只是”普通的 Java 对象;与“普通”对象的区别在于操作它们的方法保证是原子的,因此是线程安全的。对于 int,这将是 AtomicInteger,您可以自动递增,.getAndSet() 等。

然而,谈论“原子类型”与“原始类型”是部分不正确的,因为一些支持原子操作的类没有链接到原始类型;一个这样的例子是 AtomicReference,但你也有 AtomicIntegerArray 和其他一些。

另请参阅 compare and swap 上的维基百科条目,简称CAS。


此外,虽然有人会认为基本类型从根本上讲是线程安全的,但事实并非如此;每个线程都可以有自己的本地存储(这被称为 TLS,Thread Local Storage)用于优化,因此可以有自己的原始变量副本;这就是为什么在 Java 中你有 volatile

关于java - 原始类型和原子类型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28039884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com