Thanks for getting back to me, Campbell.
If I can direct you to
https://inbravo.github.io/docs/refer/java-concurrency.pdf
If you scroll to Chapter 3, in particular the paragraph under 3.1 Visibility, it says :
In general,there is no guarantee that the reading thread will see a value written by another
thread on a timely basis, or even at all. In order to ensure visibility of memory
writes across threads, you must use synchronization.
Doesn't this clash with what you've just said ?
Thanks