
| 구분 | 동기(Sync) | 비동기(Async) |
|---|---|---|
| 실행 순서 | 순차적 | 병렬/이벤트 기반 |
| 장점 | 단순, 직관적 | 성능 향상, 응답성 ↑ |
| 단점 | 작업 지연 시 전체 대기 | 복잡한 흐름 제어, 디버깅 어려움 |
| 활용 예시 | 파일 읽기, 단순 계산 | 네트워크 요청, 대용량 데이터 처리 |
정의: 두 개 이상의 스레드가 서로의 자원을 기다리며 무한 대기 상태에 빠지는 현상
발생 조건 (4대 조건)
해결 방법
int count = 0;
// 여러 스레드가 동시에 실행
count++; // 원자적이지 않음 → Race Condition 발생synchronized 블록 사용ReentrantLock 사용🚀 요약:
- 동기는 단순하고 직관적이지만 지연에 취약
- 비동기는 복잡하지만 성능과 응답성을 높일 수 있음
- 멀티스레드 환경에서는 데드락, 레이스 컨디션 같은 동시성 문제를 반드시 이해해야 함