Thread interleaving doesn't guarantee that readers will read directly after this lazy set happens. It is quite possible a reader will see the old value before this method even runs, and perhaps it sees the old value for a couple of nanoseconds.