Testing multi-threaded, concurrent Java code is difficult because each test run only captures one possible thread interleaving, and those interleavings are non-deterministic.
To address this, I created the open-source tool VMLens. VMLens allows you to test concurrent Java code in a deterministic and reproducible way by executing all possible thread interleavings.