java - 只要 protected ,私有(private)最终 String[] 数组就线程安全吗?

标签 java multithreading

假设我有一个静态最终 String[] 数组,该数组只能读取但不会被修改

private static final String[] myArray = { "Col1", "Col2", "Col3" };

如果我可以保证没有线程会向该数组写入任何值,而只会读取它们,那么这个实现是否可以并且线程安全?或者我会遇到波动性问题吗?

最佳答案

是的,只要不向数组写入任何内容就可以。它将在类型初始化期间初始化,因此所有线程都会“看到”这些值。

为了可读性,您可能需要考虑使用不可变集合(例如 Guava 中的集合)。否则,您可能会发现,虽然原始代码中的数组内容没有任何改变,但维护补丁却改变了它......

关于java - 只要 protected ,私有(private)最终 String[] 数组就线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594084/

相关文章:

java - JVM 内存使用情况,一个带线程的 JVM 还是四个 JVM 用于我的四个应用程序?

java - 非常简单的final修饰符和run方法问题

java - java中泛型的2种方式耦合

java - android 中是否有套接字接收处理程序?

java - 有没有一种方法可以让多个线程添加到同一个列表对象?

c++ - 超时后如何终止函数调用?

cocoa - 如何创建只监听performSelector :onThread: and GUI events?的运行循环

java - Spring-Security-Oauth2:默认登录成功url

Java TCP 监听器循环

python - 'QThread : Destroyed while thread is still running' on quit