Какой хороший способ использовать TDD для извлечения потокобезопасного кода? Например, скажем, у меня есть метод factory, который использует ленивую инициализацию для создания только одного экземпляра класса и возвращает его после этого:
private TextLineEncoder textLineEncoder;
...
public ProtocolEncoder getEncoder() throws Exception {
if(textLineEncoder == null)
textLineEncoder = new TextLineEncoder();
return textLineEncoder;
}
Теперь я хочу написать тест в хорошем стиле TDD, который заставляет меня сделать этот код потокобезопасным. В частности, когда два потока одновременно называют этот метод, я не хочу создавать два экземпляра и отбрасывать их. Это легко сделать, но как я могу написать тест, который заставляет меня это делать?
Я спрашиваю об этом на Java, но ответ должен быть более широко применимым.