По определению, условия гонки не могут быть детерминированы детально, если вы не управляете планировщиком потоков (что у вас нет). Самое близкое, что вы можете сделать, это либо добавить настраиваемую задержку в методе getInstance()
, либо написать код, в котором проблема может проявиться, и запустить ее тысячи раз в цикле.
Кстати, все это на самом деле не является «доказательством». Формальная проверка будет, но очень, очень трудно сделать, даже для относительно небольшого количества кода.