home
자바
home

5. 블로킹과 비동기 프로그래밍이란?

I/O 블로킹이란 작업을 처리하는 스레드가 외부 리소스의 처리를 기다려야해서 작업이 중지된 채로 기다리고 있는 상태
블로킹 ⇒ D/B조회, 네트워크IO, 파일IO
논 블로킹 ⇒ 객체 생성, 복잡한 로직 처리, 우리 스레드가 직접 처리해야 하는 모든 작업
위와 같은 블로킹을 회피하는 비동기 프로그래밍이란?
순서대로 동기적으로 작업하면서 블로킹이 완료될 때까지 기다리지 않고 특정 작업은 다른 스레드나 OS 등에 맡겨버리고 다음 작업부터 하는 것
비동기로 블로킹 작업을 논 블로킹 처리 하는 예시
자바 스크립트의 setTimeout() - 브라우저 백그라운드 스레드가 대기
자바 CompletableFuture - 우리가 지정한 스레드가 대기
Netty의 이벤트 루프 패턴 - OS의 I/O 다중화 매커니즘이 대기
Subscriber/Publisher 패턴 구현체인 Flux, Mono - 스케쥴러 스레드가 대기 ⇒ 강의에서 해볼 것