Java 私有最终字符串[]数组在其受保护的时间内是否是线程安全的?

Java 私有最终字符串[]数组在其受保护的时间内是否是线程安全的?,java,multithreading,Java,Multithreading,假设我有一个静态的final String[]数组,它只被读取,不会被修改 private static final String[] myArray = { "Col1", "Col2", "Col3" }; 如果我能保证没有线程会向这个数组写入任何值,并且只读取它们,那么这个实现可以并且线程安全吗?或者我会有波动性问题吗?是的,只要没有任何东西写入数组就可以了。它将在类型初始化期间初始化,因此所有线程都将“看到”这些值 为了可读性,您可能需要考虑使用一个不可变的集合(例如在集合中)。否则,

假设我有一个静态的final String[]数组,它只被读取,不会被修改

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

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

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


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

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


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

在尝试仅读取资源时,不会出现任何线程问题。这很好。尝试仅从资源读取时没有任何线程问题。这很好。