File tree Expand file tree Collapse file tree 1 file changed +30
-2
lines changed
Expand file tree Collapse file tree 1 file changed +30
-2
lines changed Original file line number Diff line number Diff line change 11---
2- title : " [Book - Clean Code] 13. 동시성 (작성중) "
3- date : 2025-10-24 18:00:00 +0900
2+ title : " [Book - Clean Code] 13. 동시성"
3+ date : 2026-01-22 18:00:00 +0900
44categories : [Book - Clean Code]
55tags : [book, clean code]
66---
@@ -124,3 +124,31 @@ SRP는 주어진 메서드/클래스/컴포넌트를 변경할 이유가 하나
124124 * '서버에서 잠금' 방식과 유사하지만 원래 서버는 변경하지 않는다.
125125
126126## 동기화하는 부분을 작게 만들어라
127+ Java에서 synchronized 키워드를 사용하면 Lock을 설정한다.
128+ 같은 락으로 감싼 모든 코드 영역은 한 번에 한 스레드만 실행이 가능하다.
129+
130+ Lock은 스레드를 지연시키고 부하를 가중시킨다.
131+
132+ 반면, 임계영역은 반드시 보호해야 한다.
133+ 따라서 코드를 짤 때는 임계영역 수를 최대한 줄여야 한다.
134+
135+ 필요 이상으로 임계영역 크기를 키우면 스레드 간에 경쟁이 늘어나고 프로그램 성능이 떨어진다.
136+
137+ ** 권장사항** : 동기화하는 부분을 최대한 작게 만들어라.
138+
139+ ## 올바른 종료 코드는 구현하기 어렵다
140+ ** 권장사항** : 종료 코드를 개발 초기부터 고민하고 동작하게 초기부터 구현하라.
141+
142+ ## 스레드 코드 테스트하기
143+ 코드가 올바르다고 증명하기는 현식적으로 불가능하고, 테스트가 정확성을 보장하지는 않는다.
144+ 그럼에도 충분한 테스트는 위헙을 낮춘다.
145+
146+ ** 권장사항** : 문제를 노출하는 테스트 케이스를 작성하고, 프로그램 설정과 시스템 설장과 부하를 바꿔가며 자주 돌려라. (** 멱등성** 을 보장하자.)
147+
148+ ## 결론
149+ SRP를 준수하자.
150+ POJO를 사용해 스레드를 아는 코드와 스레드를 모르는 코드를 분리한다.
151+ 스레드 코드를 테스트할 때는 전적으로 스레드만 테스트한다.
152+ 즉, 스레드 코드는 ** 최대한 집약되고 작아야 한다.**
153+
154+ 공유자원을 제대로 이해하기 위해 공유하는 객체 수와 범위를 최대한 줄이자.
You can’t perform that action at this time.
0 commit comments