Concurrency
- 네트워크 이해하기 전에, concurrency(동시성)를 알아보자
- Concurrency: 여러 개의 작업이 동시에 일어나게 보이게 하는 것
- 이것은 다른의미로는 어떤 작업들이 순서에 상관없이 동시에 수행될 수 있음을 얘기함
Thread
- 각각의 작업들은 Thread에서 실행됨
- Main-Thread : 화면 표시 및 사용자 인터랙션을 받는 작업 수행
- 데이터를 화면에 보여주기
- 버튼 클릭 이벤트 감지하기
- Bacground : Main-Thread 외에 작업들
- 네트워크에서 데이터를 다운받을 때나
- 디비에서 데이터를 읽어 온다던가
- Custom : 지정된 스레드를 통해서 작업할 때 사용
- 카메라를 통해서 들어온 영데이터 가공 시
- 오디오 데이터 변조시
Async vs Sync Task
- Async(비동기) vs Sync(동기) 작업의 차이
- 동기: 요청과 리턴이 같음
- 비동기: 요청과 리턴이 동시가 아님
Sync
![](https://velog.velcdn.com/images/woojusm/post/280bf119-89bc-404e-971c-f3f1a87c42a7/image.png)
Async
![](https://velog.velcdn.com/images/woojusm/post/0b3ae77b-7966-40aa-8a5e-036fae11381f/image.png)
실제 사용에서
특히, 네트워크 사용시
![](https://velog.velcdn.com/images/woojusm/post/6f8fe043-581e-405d-801c-49dcd12dbeca/image.png)
HTTP
- 서버와 대화하는 방식 (통신 규약)
- 데이터 요청
- 데이터 응답
데이터 요청
![](https://velog.velcdn.com/images/woojusm/post/cfb3f31f-e383-43eb-851b-46602b266785/image.png)
- URL: 서버에 데이터를 요청하기 위해 입력하는 영문 주소
- 요청 메소드
- GET: 존재하는 자원에 대한 요청
- POST: 새로운 자원을 생성
- PUT: 존재하는 자원에 대한 변경
- DELETE: 존재하는 자원에 대한 삭제
데이터 응답
- status code
- 2xx: 성공
- 3xx: 리다이렉션 메시지
- 4xx: 클라이언트 에러
- 5xx: 서버 에러
- body(요청한 데이터들)
HTTP 요약
- 요청시, URL + Request Method가 필요
- 응답시, Status Code + Response Body (JSON)으로 처리
![](https://velog.velcdn.com/images/woojusm/post/2c779ae0-f1e4-4038-95d3-f9ec551e284e/image.png)