Programming

비동기 프로그래밍

WOOOOJI 2023. 1. 17. 23:13

비동기 프로그래밍?

이해하기 제일 쉬운 방법은 바로…..

“동기 프로그래밍”이 뭔지 먼저 알아보는겁니다 ^^

ex) 자바에서 코드를 작성시

public class 동기식(){
		
	public void 동기1(){
		System.out.println("안녕하세요")
	}

	
	public void 동기2(){
		System.out.println("안녕못해요")
	}

	
	public void 동기3(){
		System.out.println("안녕해요 ㅡㅡ")
	}

}

위와 같이 코드를 작성했다고 하면 (물론 메인메소드가 없지만)

실행 순서는 동기 1 ⇒ 동기 2 ⇒ 동기 3 순서대로 될겁니다!

 

이말은 즉 ⇒ 위에서 아래로 순차적으로 하나하나 실행이 끝나면 그 다음 메소드로 이동해서 실행하고,,,,

이런 방식으로 순차적으로 앞에 메소드가 실행이 끝나야지 다음 메소드가 실행되는 방식을

바로바로 “동기” 프로그래밍 입니다!!!


그래서 비동기 프로그래밍이 뭔데요?

간단합니다 ! 동기 프로그래밍의 반대인것을 비동기 프로그래밍 이라고 하는거죠!

뭔말이냐고요?

 

자 좀더 이해를 쉽게 돕기 위해서 예를 하나 더 들어봅시다.

지하철을 예로 한번 들어보게요!!!

 

2호선 지하철에는 현재 선로가 딱 하나만 있고 모든 열차가 순서대로 운행을 하고 있습니다.

근데 만약에 맨 앞에 달리던 열차가 갑자기 매우 느리게 달려요! 그러면 뒤에 있던 모든 열차도 속도를 줄이고

시간이 지연되겠죠??? 이런 문제를 해결하는게 바로 비동기 프로그래밍입니다!

 

 

자 하나 더 예를 들어볼게요!

집안일을 한다고 가정했을떄,

  1. 빨래돌리기
  2. 빨래 널기
  3. 청소기 돌리기
  4. 설거지하기

라고 하였을때 동기 프로그래밍 방식은 1. 빨래돌리기를 실행하고 다음 동작인 2. 빨래 널기를 실행하기 위해서는

일단 빨래가 다 돌아가야죠?? 즉 빨래가 끝날때 까지는 아무것도 못하고 가만히 있다는겁니다…….

 

반면 비동기 방식은? 빨래를 일단 돌려놓고 다음으로 실행가능한 3. 청소기 돌리기도 하고, 4.설거지도 하는겁니다!

그러다가 1. 빨래가 다 돌아갔다면, 그때 2.빨래널기를 실행하는거죠!!!!


어디서 많이 들어본 개념인데요?…

맞습니다. 자바에서 프로세스, 쓰레드 개념에서 한번 저희는 접해봤습니다!

여러개의 프로세스와 쓰레드가 돌아가고 있는게 바로 “비동기 프로그래밍” 방식인거에요!!!

즉 멀티태스킹이 가능한 방식이라는 거죠 🙂


대표적인 예로는 Spring ajax라이브러리 를 활용하여 비동식 방식을 구현하는겁니다!

고로 비동기 방식을 구현하는 방법은 제가 작성한 https://www.notion.so/Spring-ajax-f17eb1fc52dd44b78958669a69247f83

Spring에서 ajax사용하기 글을 통해 확인할 수 있습니다!

728x90