비동기 프로그래밍이란? : 여러가지 로직들이 완료 여부와 관계 없이 실행되는 방식 (쉽게 설명하면 정해진 순서 없이 동시에 수행) 동기 프로그래밍 : 요청을 보낸 로직이 완료되어 결과값을 받을 때까지 다음 작업은 멈춘 상태로 기다림 쓰레드(Thread) : 로직을 동시에 실행할 수 있도록 돕는 것이 목적이다. 프로그램은 하나의 main 쓰레드가 존재하며 별도의 자식 쓰레드를 thread 키워드로 생성 가능하다. : 동시성 보장 수단: Context Switching, 운영체제 커널에 의해 동시성 보장 / 작업 단위 = Thread / 각 Thread가 독립적인 Stack 메모리를 가짐 : 블로킹(Blocking) : Thread A 가 Thread B 의 결과를 기다리고 있으면 A는 블로킹 상태며 B의 ..