이 전까지 동기, 비동기는 그저 화면이 깜박이면서 새로 고침되느냐 안깜박이고 이벤트 탄 곳만 바뀌느냐 정도로 알고 있었다.ㅠㅠ
Blocking / Non-Blocking
: 다른 주체가 작업할 때 자신에게 제어권이 있는지?
* Blocking
: 호출된 함수A가 제어권을 갖고 자신의 작업이 끝날 때까지 넘기지 않음
-> A가 끝날 때까지 아무 것도 못하고 기다리고 있어야 함(기다릴게~빨리줘!)
* Non-Blocking
: 호출한 함수B에게 제어권을 넘기고 다른 일을 진행할 수 있게 함(callback)
-> A와 B는 각자 알아서 본인 작업을 수행함(내 할 일할게~너도 너 할일 해서 줘)
Sync / Async
: 결과를 받았을 때 순서와 결과에 관심이 있는지?
* Sync (동기)
: 호출된 함수와 호출한 함수가 수행 및 결과를 동시에 하거나 순차적으로 진행함
-> 결과가 완료되야 다른거 수행 가능~ 기다려줘ㅠㅠ
* Async (비동기)
: 호출한 함수B와 호출된 함수A는 별개로 동시에 진행 가능함
-> 완료전에 다른거 실행 가능~ 기다리지마!

Future/Completable Future
: 비동기를 처리하게끔 하는 객체
*Future
: 작업 자체를 블로킹해서 다른 작업 수행 불가
*Completable Future
: 결과에 대한 동기/비동기 제어권을 가지고 있어 다른 작업의 수행여부를 결정할 수 있음
'⭐ Programming > Backend' 카테고리의 다른 글
| IoC 컨테이너와 @Bean, @Component (0) | 2023.05.08 |
|---|---|
| DI와 IOC와 DIP (feat. 프레임워크와 라이브러리) (0) | 2023.05.07 |
| 트랜잭션이란? (0) | 2023.02.14 |
| JPA와 Mybatis 차이 = ORM과 SQL MAPPER 차이 (0) | 2023.02.09 |
| Spring 웹 계층 (0) | 2023.02.04 |