18장 동시성2 (437 ~ 446)
다중 스레드 코드 테스트
- 문제가 너무 드물게 발생해 테스트로 발견하기 어렵다
- 간단한 실패를 증명할 방법이 필요하다
- 몬테 카를로 테스트
- 조율이 가능한 유연한 테스트를 만든다
- 임의로 값을 조율해서 반복해 돌리다가 실패하면 버그가 있다는 증거다
- 스레드 코드 테스트를 도와주는 도구
- IBM의 ConTest : 스레드에 안전하지 않은 코드에 보조 코드를 더해 실패할 가능성을 높혀주는 툴
- ConTest로 보조 코드를 추가하니 천만 번에 한 번 정도 실패하던 코드가 서른 번에 한 번 정도 실패했다
결론
- 다중 스레드 시스템을 구현하기 위해 알아야 할 내용이 많다
- 더그 리(Doug Lea)가 쓴 Concurrent Programmin in Java를 추천한다