| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 코딩테스트
- 객체지향
- 정렬
- 파이썬
- 자바프로그래밍
- 자바
- JVM
- 코딩공부
- 멀티스레드
- 자바개발
- 메모리관리
- 자료구조
- 코딩테스트팁
- 알고리즘
- 알고리즘공부
- 개발자팁
- Java
- 개발공부
- 자바기초
- 가비지컬렉션
- 프로그래머스
- 코딩인터뷰
- 백준
- 클린코드
- 개발자취업
- 예외처리
- 프로그래밍기초
- HashMap
- 코딩테스트준비
- 자바공부
- Today
- Total
목록ReentrantLock (2)
코드 한 줄의 기록
안녕하세요. 오늘은 Java 멀티스레드 환경에서 발생할 수 있는 세 가지 심각한 동시성 문제인 데드락(Deadlock), 라이블락(Livelock), 스타베이션(Starvation)에 대해 깊이 있게 살펴보겠습니다. 12년 동안 PHP를 다루고 최근에 Java를 본격적으로 배우면서 겪은 경험을 바탕으로, 이 세 가지 문제의 발생 원리부터 실제 해결책까지 정리해봤습니다.데드락(Deadlock) - 서로의 자원을 기다리며 무한 대기데드락이란?데드락은 두 개 이상의 스레드가 서로 다른 자원을 점유하고 있으면서, 동시에 상대방이 가진 자원을 필요로 할 때 발생합니다. 마치 교차로에서 두 대의 차가 서로 마주 보고 있으면서 진행하지 못하는 상황처럼, 스레드들이 서로를 기다리며 무한 대기 상태에 빠지게 되는 것이죠..
우리가 백엔드 개발을 하면서 가장 많이 마주치는 문제 중 하나가 바로 동시성 이슈입니다. 여러 개의 스레드가 동시에 같은 자원에 접근하려고 할 때, 우리가 제대로 관리하지 않으면 예상치 못한 결과가 나타날 수 있거든요. 저도 처음에는 synchronized 키워드만 사용했지만, 실제 프로젝트에서 더 정교한 동시성 제어가 필요해졌을 때 Java의 java.util.concurrent 패키지에 있는 도구들을 알게 됐습니다.오늘은 제가 공부하면서 정리한 ReentrantLock, Semaphore, CountDownLatch 이 세 가지 동시성 유틸에 대해 함께 알아보겠습니다. 각각의 특징, 언제 어떻게 써야 하는지, 그리고 실제 코드 예제까지 정리해봤습니다.ReentrantLock: 명시적 락 제어의 시작먼..