참고
동기/비동기와 블로킹/논블로킹
동기 작업
NOTE
2개 이상의 주체가 동시에 수행하거나, 끝나는 동시에 시작함.
비동기 작업
NOTE
2개 이상의 주체가 시작, 종료시간과 관계없이 시작/종료 시간을 가진다.
블로킹
NOTE
A가 다른 대상을 호출하고, 받아오는 동안 멈춰있음!
•
자신의 작업을 하다가 다른 작업 주체가 하는 작업의 시작부터 끝까지 기다리는 방식
논블록킹
NOTE
A가 다른 대상을 호출하고, 기다리지 않고 계속 작업을 수행함!
•
자신의 작업을 하다가 다른 작업 주체가 하는 작업을 기다리지 않고 계속해서 진행하는 방식
동기/블로킹 조합
NOTE
작업시간의 시작과 끝 동시에 진행되거나, 순차적이다.
•
JDBC를 이용해 DB에 쿼리 질의를 날린다.
•
메서드에서 다른 메서드를 호출하여 결과값을 즉시 받아온다.
비동기/블로킹 조합
NOTE
자신의 작업을 하던 도중, 결과를 조회하려고하면 이미지처럼 진행됨.
•
결국 기다려야 하기 때문에, 동기/블로킹 조합과 비슷한 성능
동기, 논블로킹 조합
NOTE
논블로킹으로 작업을 계속해서 하지만, 동기를 위해서 계속해서 작업이 끝났는지 조회함.
•
위의 그림처럼 딱히 작업효율이 좋지는 않다.
비동기, 논블로킹 조합
NOTE
자원이 충분하다면 가장 효율이 좋은 조합이다.
•
비동기 방식으로 진행되기에 가장 효율적인 조합이다!