원자성과 가시성을 단어로만 외웠는지, 두 결함이 *각각 어떻게 다른 버그로 드러나는지*와 어떤 동기화 도구가 어디까지 책임지는지를 구분할 수 있는지를 가른다.
경쟁 상태는 여러 스레드가 공유 자원을 동시에 갱신할 때 실행 순서에 따라 결과가 달라지는 현상이다. 원인은 두 갈래로 쪼개진다 — i++처럼 읽기·수정·쓰기로 나뉘는 연산이 중간에 끼어드는 원자성 문제와, 한 스레드의 변경이 CPU 캐시에 머물러 다른 스레드가 보지 못하는 가시성 문제다. 둘 중 하나만 잡으면 같은 버그가 모양만 바꿔 다시 나타난다.
카운터나 재고가 가끔 어긋나는 버그를 만나 원자성 문제로 좁혀낸 경험이 있다면 진단 과정을 들고 갈 수 있다
`synchronized` 대신 `AtomicInteger`나 `LongAdder`로 바꿔 처리량을 끌어올린 경험이 있다면 선택 기준과 함께 말할 수 있다
jcstress나 부하 테스트로 동시성 결함을 재현해본 경험이 있다면 검증 방식과 한계를 함께 설명할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.