JAVA

[Java] sysnchronize(동기) asynchronize(비동기) 차이점 blocking non blocking 차이점

로춘남 2022. 3. 25. 14:06
728x90


 

Blocking vs Non-blocking

☞ 프로그램을 바로 실행가능한지 아닌지에 따라 다름

 

Blocking I/O model

  • System Call이 끝날때까지 프로그램이 대기하고, System Call이 완료될 때 return하는 모델
  • Wait Queue에 들어감.

Non-blocking I/O model

  • System Call이 완료되지 않아도 대기하고 않고 return 하는 모델
  • Wait Queue에 들어가지 않는다.

 

Synchronize(동기) vs Asynchronize(비동기)

☞ 결과물을 가져오는 시점에 따라 다름

동기(synchorunous)

  • 요청을 보낸후 응답을 받아야하지만 다음 동작이 이루어지는 방식
  • 모든 일이 순차적으로 실행됌

비동기(asynchrounous)

  • 요청을 즉시 처리하지 않아도 그 대기 시간동안 또 다른 동작이 이루어지는 방식
  • 모든 일이 병렬적으로 실행

 

Synchronize

  • System Call이 끝날때까지 기다리고 결과물을 가져옴.

 

Asynchronize

  • Callback 함수를 통해 System Call이 나중에 완료될 때 결과물을 가져옴.

 

ASynchronous Vs Non-Blocking


System Call이 즉시 Return될 때 데이터의 포함 유무에 따라 나뉜다

ASynchronous

  • 요청에 대한 처리가 완료되지 않아도 운영체제에서 응답준비가 되면 응답.

Non-Blocking

  • 요청에 대한 처리가 가능하면 응답하고, 불가능하면 Error를 반환.

 

Blocking Vs Synchronous


Wait Queue 유무에 따라 나뉠 수 있음.

Blocking

  • System Call의 return 을 기다리는 동안 wait Queue에 필수로 머뭄.

Synchronous

  • System Call의 return을 기다리는 동안 Wait Queue에 선택적으로 머물 수 있음.

 

참 고

 


출 처 : https://velog.io/@guswns3371/synchronize-VS-asynchronizeblocking-VS-non-blocking

https://nesoy.github.io/articles/2017-01/Synchronized

728x90

'JAVA' 카테고리의 다른 글

[Java] 동시성 문제  (0) 2022.03.28
[Java] 직렬화(Serialization)란?  (0) 2022.03.26
[Java] 인터페이스란?  (0) 2022.03.25
[Java] static 이란?  (2) 2022.03.24
[Java] GC 종류별 차이  (0) 2022.03.24