Q:

In Java, is it required to synchronize write access to an array if each thread writes to a separate cell space?

Is it required to synchronize write access to an array in Java if each thread writes to a separate cell space?
EDIT: Specifically, the array is either a primitive Array or an immutable object array. Ex. An int array or a String array.

A:

No, synchronization is not needed.
It is defined in JLS §17.6 Word Tearing:

One implementation consideration for Java virtual machines is that every field and array element is considered distinct; updates to one field or element must not interact with reads or updates of any other field or element. In particular, two threads that update adjacent elements of a byte array separately must not interfere or interact and do not need synchronization to ensure sequential consistency.

A:

If read access is also partitioned in the same manner, then synchronization is not needed as per bkail's link.
But if the threads read each other's writes, it would still be necessary to have a memory barrier to force synchronization of cache contents. Otherwise, threadys may get inconsistent read results.

