스레드 안전성을 확보한 개별 컴포넌트를 가져다가 안전한 방법을 동원해 서로 연결해 사용한다면 규모 있는 컴포넌트가 프로그램을 더 쉽게 작성할 수 있다.

4.1 스레드 안전한 클래스 설계

캡슐화 없이 만들어 낸 결과물을 여러 스레드에서 사용해도 안전한지 확인하기 어렵고, 변경해야할 필요가 있을 때에도 스레드 동기화 문제 없이 변경하기는 더 어렵다.

→ 객체가 갖고 있는 정보를 객체 내부에 숨겨두면 객체 단위로 스레드 안전성이 확보되었는지 확인할 수 있다.

클래스가 스레드 안정성을 확보하도록 설계하고자 할 때에는 다음 3가지를 고려해야 한다.

객체의 상태

객체의 상태는 항상 객체 내부의 변수를 기반으로 한다.

동기화 정책

4.1.1 동기화 요구사항 정리

여러 스레드가 동시에 클래스를 사용하려는 상황에서 클래스 내부의 값을 안정적인 상태로 유지할 수 있다면 스레드 안정성을 확보했다고 할 수 있다.