728x90

동기 비동기를 보기전에 쓰레드를 봐야 한다.

 

pc사야중에 4코어 8쓰레드, 8코어 16쓰레드라는게 있는데 
쓰레드는 일을 하는 녀석인데 8쓰레드는 일하는 녀석이 8개
16쓰레드는 일하는 녀석이 16개

1코어 1쓰레드

2코어 2쓰레드

4코어 4쓰레드

4코어 8쓰레드

쉽게 이렇게 생각하면된다

양손이 1쓰레드

 

 

일을 할때 하나의 스레드에서 하면 한작업이 끝날때까지 다른 작업을 하지 못하기 때문에 속도가 느려진다.

스레드가 많아지면 한번에 2가지 4가지 일을 할 수 있기 때문에 속도가 빨라진다.

 

 


 동기 VS 비동기 

 

비동기

작업을 다른 스레드로 보내는게 비동기 (여러개의 스레드가 돌아가서 작업을 처리한다)
동시에 일을 할 수 있다.
- 작업을 다른 스레드에서 하도록 시킨 후.
  그 작업이 끝나길 '안기다리고' 다음일을 진행한다.
  (안 기다려도 다음 작업을 생성할 수 있다.)

동기

작업을 다른 스레드로 보내지 않고 하나의 스레드에서 작업을 하는거 (하나의 스레드에서 차례대로 작업을 하는것)
동시에 일을 하지 않는다.
- 작업을 다른 스레드에서 하도록 시킨 후,
  그 작업이 끝나길 '기다렸다가' 다음일을 진행한다.
  (기다렸다가 다음 작업을 생성할 수 있다.)

 


비동기 라는 개념이 일반적으로 필요한 이유는 서버와의 통신 때문

직렬 (Serial) VS 동시 (Concurrent)?

직렬(Serial) 처리
(보통 메인에서) 분산처리 시킨 작업을 '다른 한개의 쓰레드에서' 처리
순서가 중요한 작업을 처리할 때 사용

동시(Cocurrent) 처리
(보통 메인에서) 분산처리 시킨 작업을 '다른 여러개의 쓰레드에서' 처리
각자 독립적이지만 유사한 여러개의 작업을 처리할 때 사용


분산처리 하려는거면 무조건 동시( Concurrent)처리'가 무조건 좋아 보이는데 왜 직렬 (Serial)처리가 필요할까?

작업에 순서가 필요한 경우가 있기 때문이다. 무조건 1번이 끝나고 2번이 실행되야 하는 경우

 

동시처리의 예

당근마켓 어플에서 목록을 봤을때 물건의 이미지를 하나씩 다 서버에서 가져올때 그 하나 하나가 동시처리


비동기(Async)와 동시(Concurrent)의 차이

비동기는작업을 보내는 스레드에 관련된말

동시는 메인 스레드에서 다른 스레드로 작업을 보낼때 한개냐 여러개냐의 개념


 

728x90

'개념정리' 카테고리의 다른 글

트랜젝션  (0) 2021.04.02
예외처리 (try,catch, throw, throws)  (0) 2021.04.02
비주얼스튜디오  (0) 2021.03.30
자바 게시판 엑셀출력  (0) 2021.03.30
spring 쿼리로그 출력, log4j  (0) 2021.03.29

+ Recent posts