Как написать модульные тесты, проверяющие инварианты параллелизма

Есть и другие вопросы по этой проблеме, но я пытаюсь понять, как подойти к модульному тестированию чего-то вроде этого:

 public class Semaphore extends Lock {
        private AtomicInteger semaphore = new AtomicInteger(0);
        public synchronized boolean available() {
                return semaphore.intValue() == 0;
        }
        public synchronized void acquire() {
            semaphore.incrementAndGet();

        }
        public synchronized void release() {
            semaphore.decrementAndGet();
        }
    }

Это мой самодельный механизм блокировки (только для учебных целей). Как бы я мог протестировать безопасность потока? Я знаю, что нет никаких гарантий, когда дело доходит до модульного тестирования параллельного кода, но как я могу написать модульный тест, который попытается проверить очевидные инварианты, присущие этому механизму блокировки?

9
задан LuxuryMode 31 January 2012 в 11:06
поделиться