Во-первых, вы не можете гарантировать только с помощью тестирования, что ваш класс полностью поточнобезопасен .Какие бы тесты вы ни выполняли, вам все равно нужно , чтобы ваш код был проверен как можно большим количеством опытных глаз, чтобы вы могли обнаружить тонкие проблемы параллелизма.тестовые сценарии, чтобы попытаться охватить все возможные сценарии синхронизации между потоками , как вы это сделали.Для идей по этому (и для проектирования потоковобезопасных классов в целом) рекомендуется прочитать Параллелизм Java на практике .
Кроме того, вы можете запустить стресс-тесты выполнение нескольких потоков одновременно в течение длительного периода времени.Количество потоков должно быть больше разумного предела, чтобы частые конфликты потоков происходили часто - это увеличивает шансы потенциальных ошибок параллелизма проявиться со временем.