더북(TheBook)

예제 2를 위한 리팩토링 제안

프로젝트에 밀접한 병행 유틸리티와 자바 1.5부터 도입된 표준 유틸리티 사이의 사상을 고려하여 예제 2를 위한 리팩토링 방식을 다음과 같이 제안한다.

 

HashMap의 병행 버전은 java.util.concurrent.ConcurrentHashMap 사용으로 대체할 수 있다.

차단하는 FIFO 버퍼는 java.util.concurrent.LinkedBlockingQueue 사용으로 대체할 수 있다.

쓸 때 복사(CoW) 접근 방법을 이용한 배열 목록 구현은 java.util.concurrent.CopyOnWriteArrayList 사용으로 대체할 수 있다.

 

이 같은 대체 리팩토링 작업을 수행할 때는 광범위한 테스트는 물론 코드·설계 분석과 검토를 요구한다. 찾고, 재현하고, 테스트하기 어려운 미묘한 병행성 버그를 초래할 수 있기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.