假设我有一个静态最终 String[] 数组,该数组只能读取但不会被修改
private static final String[] myArray = { "Col1", "Col2", "Col3" };
如果我可以保证没有线程会向该数组写入任何值,而只会读取它们,那么这个实现是否可以并且线程安全?或者我会遇到波动性问题吗?
最佳答案
是的,只要不向数组写入任何内容就可以。它将在类型初始化期间初始化,因此所有线程都会“看到”这些值。
为了可读性,您可能需要考虑使用不可变集合(例如 Guava 中的集合)。否则,您可能会发现,虽然原始代码中的数组内容没有任何改变,但维护补丁却改变了它......
关于java - 只要 protected ,私有(private)最终 String[] 数组就线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594084/