Sam Story

동기 , 비동기 (Synchronous , Asynchronous) 본문

개발지식

동기 , 비동기 (Synchronous , Asynchronous)

Sam H 2024. 4. 24. 15:17

 

1. 동기 , 비동기 란?

 

동기 (Synchronous) : 작업을 수행하고 그작업이 완료되고 순차적으로 작업을 진행하는 것

동기 방식 예시

 

 

비동기 (Asynchronous) : 어떤 작업을 수행하지만 순서에 상관없이 계속해서 작업을 할 수 있는 방식

 

비동기 방식 예시

 

2. 두가지 방식의 장점과 단점

 

동기 방식으로 작업을 했을 때의 장단점

 

장점 : 설계가 매우 간단하고 직관적이다

 

단점 : 요청에 따른 결과가 반환되기 전까지는 다음 작업을 수행할 수 없고 기다려야 한다.

 

 

비동기 방식으로 작업을 했을 때의 장단점

 

장점 : 요청에 따른 결과가 반환되는 시간동안 다른 작업을 수행할 수 있다.

 

단점 : 동기식보다 설계가 복잡하고 논증적이다.

 

 

 

3. 비동기가 필요한 이유

애플리케이션이 실행되면 메인 액티비티가 메모리에 로드되고

메인 스레드를 포함한 프로세스가 생성 된다.

 

메인 스레드에서 시간이 걸리는 작업을 실행하면 ANR이 발생한다

* ANR : Application Not Responding

 

즉 안드로이드에서는 메인 스레드에서의 작업이 가장 중요하고

원활한 작업을 위해서는 비동기 방식이 필요하다.

 

지금까지 작업하면서 사용한 비동기 방식의 대표적인 예로는

클라이언트에서 서버로 통신을 할때 주로 비동기 방식으로 처리가 된다

 

서버에 응답을 요청하고 결과를 반환 받는데까지 걸리는 시간이 길기 때문에

메인 스레드에서 진행하는것이 아닌 비동기방식으로 별도의 작업으로 처리를 해준다.

 

 

 

사실 내용만 보면 비동기와 멀티스레드 방식이 같은 뜻이 아닌가? 라는 생각을 했었다.

 

관련된 내용들을 찾아보면 같은 뜻은 아니다.

 

하지만 개념적으로 혼동되는 부분들이 많다.

 

나중에 동기,비동기,스레드 세가지에 관련된 내용들을 확실히 개념을 잡고 포스팅 해보겠다.

 

 

 

'개발지식' 카테고리의 다른 글

엔진엑스 (NGINX)  (0) 2024.05.08
아파치 (Apache)  (1) 2024.05.01
싱글스레드 , 멀티스레드 (Single Thread , Multi Thread)  (0) 2024.04.17
디자인 패턴 (Design Pattern)  (0) 2024.04.14
AAC (Android Architecture Component)  (0) 2024.03.30