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


