동기적과 비동기적은 프로그램이 작업을 수행하는 방식을 설명하는 데 사용되는 개념이다.
동기적(Synchronous)
- 순차적 진행 (한 작업 시작되면 다음 작업은 이전 작업이 완료될 때 까지 대기)
- 스레드의 차단 (작업이 진행되는 동안 호출한 스레드는 작업이 완료될 때 까지 차단(blocked))
전형적으로 동기적 작업은 호출한 스레드가 작업의 결과를 기다려야할 때 사용된다.
(데이터베이스 쿼리, DB의 데이터를 읽거나 쓸 때 데이터베이스 쿼리가 완료될 때까지 해당 스레드가 대기)
비동기적(Asynchronous)
- 별도의 스레드 or 다른 방식으로써 작업 분리 (비동기적 작업은 별도 스레드 또는 방식으로 작업을 분리하여 호출한 스레드의 차단 없이 진행됨)
- 백그라운드에서의 실행 (작업이 백그라운드에서 실행되기 때문에 호출한 스레드는 작업이 완료될 때 까지 다른 작업을 계속할 수 있음)
비동기적 작업은 보통 I/O 작업, 네트워크 요청과 같이 시간이 오래 걸리는 작업을 처리할 때 사용된다.
사용 예시
- 동기적 작업, 전화를 걸고 상대방의 대답을 기다리는 것과 같음 (기다리는 동안 다른 작업이 불가)
- 비동기적 작업, 이메일을 보내고 응답을 기다리지 않고 다른 작업을 수행 (기다리는 동안 다른 작업이 가능)
'Java > 개념 정리' 카테고리의 다른 글
스레드의 차단(blocked) (0) | 2024.05.16 |
---|---|
var 키워드에 대하여 (0) | 2024.02.28 |
JWT(Json Web Token)의 구조 (0) | 2024.02.22 |
Heap 이란? (1) | 2023.10.22 |
연결리스트(LinkedList) (0) | 2023.10.21 |