사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다.
1. 동기와 비동기
- 코드적으로 접근해야 하는 개념
- 특정 코드 블락이 다른 코드 블락의 완료 여부에 의존해서 실행될 때 동기적으로 실행된다고 표현
- 비동기를 구현하는 가장 흔한 방법으로,
- 특정 코드 블락이 실행되는 동안 다른 코드 블락을 실행하기 위해 별도의 스레드를 할당하여 두 코드 블락이 독립적으로 수행되도록 함
- 또는 call-back 을 사용
- 한계
- 외부 API 호출이나 DB 접근을 비 동기적으로 수행한다고 해 보자
- 별도의 스레드를 할당해 해당 작업을 수행하면 원래 작업을 하던 스레드는 블러킹 되지 않는다.
- 하지만, 별도로 할당한 스레드는 블러킹 되고 있다.
2. 논블러킹
- 스레드적으로 접근해야 하는 개념
- 스레드가 아무것도 안 하고 특정 작업을 기다리고만 있는 현상을 블러킹 되었다고 함
- 이러한 블러킹이 없는 스레드 운용 기술을 논 블러킹 기술이라고 한다.
- ex> netty 의 event loop
Q1) 동기적인 코드는 필연적으로 블러킹 될까?
- 지금까지 본 코드는 전부 그랬음..
참고
'java > thread(동시성)' 카테고리의 다른 글
API 호출 관점에서 WebClient 와 Coroutine 조합해보기 (0) | 2024.01.30 |
---|---|
스레드 block 관점에서 Webflux Map vs Flatmap 비교 (0) | 2023.10.02 |
API 호출 관점에서 TaskExecutor & Coroutine & Webclient 비교해보기 (0) | 2023.09.08 |
[Udemy: Java Multithreading, Concurrency & Performance Optimization] Motivation (0) | 2021.11.25 |
댓글