Java doesn't produce 'garbage data', racing writes will never show intermediary results.
The hope when Java developed this memory model was that loss of SC is something humans can cope with, it was not, the behaviour is too strange.
To solve interweaving, add mutexes. And once you have mutexes you'll be protected from weak memory models.
Well, the result is safe but unknowable. I would call that garbage data.