반응형
공부 시간 : 2021/05/23 15:50 ~ 16:50
11주차. Blocking vs Nonblocking, Synchronous vs Asynchronous
Blocking vs Blocking
블로킹과 논블로킹의 차이는 함수호출과 결과 리턴에 대한 이야기이다. (기술적으로 명확하게 구분된다.)
- Blocking
- A 라는 함수를 호출 했을때, 기대하는 행위(동작)을 모두 마칠때까지 기다린 후, 결과값을 리턴함.
- NonBlocking
- A 라는 함수를 호출 한 후, 기대하는 행위(동작)을 요청 한 후 바로 리턴함.
함수를 실행한 후 리턴하는데 까지 시간이 얼마나 걸리는지로 블로킹 / 논블로킹을 판단 할 수도 있다.
"Hello World"를 출력하고 결과를 반환하는 함수의 경우에, 원하는 동작을 수행하고 리턴값을 반환하기때문에
이론적으로 봤을때는 블로킹되었다고 할 수 있다. 하지만, 매우 짧은 시간이 걸릴 것이므로 다음 함수를 실행하는데
대기시간은 거의 없는 상황일 것이다. 위 와 같은 상황은 논블로킹이라고
말 해도 무방하다.
Synchronous vs Asynchronous
동기, 비동는 기술적으로 구분되지 않는 추상적인 문제이다.
A, B가 서로 연관이 있는 다른 행위라고 가정해보자.
- Synchronous(동기)
- A와 B가 순차적으로 실행되면 동기이다.
- 만약, A와 B가 동시에 실행되더라도, A와 B사이에 의존, 연관관계가 없다면 동기이다.
(연관관계가 없다면 동기, 비동기를 굳이 논하는 것의 의미가 크게 없는 듯 하다.)
- Asynchronous(비동기)
- A와 B가 동시에 실행되면 비동기이다.
- A와 B가 동시에 실행된다고 해도, A가 B에 밀착하여(완전히 의존하여) 실행된다면 비동기라고 할 수 없다.
정리
- 블로킹과 논블로킹은 동시성문제와 무관하다.
- 블로킹/논블로킹은 메서드 실행 후 시간이 얼마나 걸리는지로 판단할 수도 있다.
- 동기, 비동기는 동시성과 관련이 있다.
- 동기, 비동기를 나누는건 대부분 쓰레드와 관련한 것이라고 생각하면 된다.
참고 사이트 :
반응형
'컴퓨터 > JAVA' 카테고리의 다른 글
자바 고급 스터디 12 . 동시성 문제 (0) | 2021.05.30 |
---|---|
자바 고급 스터디 10. 인터페이스, 추상클래스, Enum (0) | 2021.05.15 |
자바 고급 스터디 9. static에 대하여 (0) | 2021.05.09 |
자바 고급 스터디 8. garbage collector 종류 (0) | 2021.05.02 |
자바 고급 스터디 7. garbage collector (0) | 2021.04.23 |