gpt4 book ai didi

java - public static final int 线程安全吗?

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:14 26 4
gpt4 key购买 nike

我想要一个包含从多个线程访问的常量的文件。为此,拥有一个包含大量 public static final int 的类是否是安全的实现?

最佳答案

是的,它是线程安全的。保证在类初始化之后初始化任何 static final 变量。因此,一旦在代码中的任何地方使用了包含此类 static final 变量的类,它总是由 requirement of the JVMS 完全初始化(即设置值)。 .

对于原始的 int,这个条件更加严格。原始的 static final 变量(同样适用于 String)是所谓的 compile-time constant由 Java 编译器 javac 内联。唯一的要求是该值可以由 Java 编译器计算,即它不能是非常量评估的结果。当您写到要定义常量 时,我认为这不适用于您的用例。因此,这些常量值被直接复制到它们的访问位置,这减少了通过反射更改的 static final 变量的非线程安全的极端情况,假设这是非原始类型的问题。

此外,使用此类变量是一个好主意,因为它避免了使用所谓的 magic numbers。 .

关于java - public static final int 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25868200/

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