SimpleDateFormat 동시성 문제부터 불변 객체까지
서비스의 날짜 변환 유틸에서 간헐적으로 발생한 ArrayIndexOutOfBoundsException을 추적하며 찾은 SimpleDateFormat 동시성 문제의 원인과 같은 유형의 사례, 불변 객체를 정리합니다.
서비스의 날짜 변환 유틸에서 간헐적으로 발생한 ArrayIndexOutOfBoundsException을 추적하며 찾은 SimpleDateFormat 동시성 문제의 원인과 같은 유형의 사례, 불변 객체를 정리합니다.
데드락이 생기는 네 가지 조건과 운영체제의 예방·회피·감지·무시 전략을 정리하고, InnoDB·JVM·tryLock·락 순서 정렬 같은 실제 도구가 각각 어느 전략에 해당하는지 예제 흐름도로 연결합니다.
한 프로그램 안의 여러 스레드가 같은 데이터를 건드릴 때 쓰는 스핀락·뮤텍스·세마포를 기다리는 방식과 소유권 차이로 비교하고, 순서 신호와 우선순위 역전까지 예제 흐름도로 정리합니다.
트랜잭션이 섞여 실행되는 순서인 스케줄과 시리얼라이저블의 뜻, DB가 검사 대신 락과 MVCC라는 규칙을 쓰는 이유, 격리 수준 네 단계와 데드락을 예제 흐름도로 정리합니다.
비관적 락이 분산 환경에서 갖는 한계와 Redisson 분산락을 사용하는 이유, DB 안에서의 대기와 Redisson pub/sub 방식의 락 획득 차이, 상황별 트레이드오프를 흐름도와 함께 정리합니다.
락 기반 동시성 제어의 한계를 살펴보고, MVCC가 커밋된 데이터만 읽는 방식과 트랜잭션 격리 수준에 따라 읽는 데이터가 달라지는 원리를 예제 흐름도와 함께 정리합니다.
비관적 락의 개념과 S-Lock/X-Lock, 갭 락과 next-key lock의 동작을 살펴보고, JPA 동시성 테스트로 재고 차감 문제를 해결하는 과정과 갭 락으로 생기는 데드락을 예제 흐름도와 함께 정리합니다.
재고 차감 동시성 테스트로 문제를 재현하고, JPA @Version 기반 낙관적 락의 동작 원리와 사용 시점, 주의할 점을 예제 흐름도와 함께 정리합니다.
카프카 컨슈머 3개가 같은 데이터를 동시에 적재하며 생긴 중복 적재 문제와 분산락을 이용한 해결 방법, 이를 찾아보며 공부한 트랜잭션 ACID와 스케줄·회복 가능성 이론을 흐름도와 함께 정리합니다.
Java 21에서 정식 도입된 Virtual Thread가 Carrier Thread에 mount·unmount되는 방식을 운영체제의 멀티프로그래밍·멀티태스킹·멀티스레딩 개념과 연결해 흐름도로 설명하고, pinning을 포함한 장단점과 사용 시기를 정리합니다.