ν°μ€ν 리 λ·°
Blocking VS Non-Blocking
π‘ Blocking
- μμ μ μμ μ μ§ννλ€κ° λ€λ₯Έ 주체μμ μμ μ΄ μμλλ©΄ λ€λ₯Έ 주체μμ μμ μ΄ λλ λκΉμ§ κΈ°λ€λ Έλ€κ° μμ μ μμ μ μμνλ κ²μ λλ€.
- Blockingμ μμ μ΄ νΈμΆν ν¨μκ° μλ£λκΈ°κΉμ§λ₯Ό κΈ°λ€λ¦¬λ κ²μ λλ€. κ·Έλμ Blocking μν©μμλ μμ μ μ± μμ λκ°μ§κ³ μλμ κ΄κ³ μμ΄ μμ μ΄ μννλ λ‘μ§μ λ©μΆκ²λκ³ μ€λ§€λΆλ§ νΈμΆν ν¨μκ° κ²°κ³Όλ₯Ό λλ €μ£ΌκΈ°λ₯Ό κΈ°λ€λ¦¬κ² λ©λλ€.
π‘ Non-Blocking
- λ€λ₯Έ 주체μμ μμ μ κ΄λ ¨μμ΄ μμ μ μμ μ νλ κ²μ λλ€.
- μμ μ΄ νΈμΆν ν¨μμ λνμ¬ κΈ°λ€λ¦¬μ§ μκ³ , μμ λ§ μ λ¬ν ν 볡κ·νμ¬ μμ μ μμ μ μνν©λλ€. μμ²ν μμ μ λν κ²°κ³Όκ° μμ²κ³Ό λμμ μ€λΉκ° λμ΄μλ€λ©΄ λ°λ‘ κ²°κ³Όλ₯Ό λ°μ μλ μμ§λ§, 보ν΅μ κ²°κ³Όλ₯Ό μ£ΌκΈ°μ μκ°μ΄ 걸리기 λλ¬Έμ pending μ νΈλΌλ μ₯μ΄μ£Όκ² λ©λλ€.
- μ€μν κ²μ Blockingκ³Όλ λ€λ₯΄κ² μμ μ΄ κ°λ κΈΈμ λ©μΆμ§ μλλ‘ νλ€λ κ²μ λλ€.
π‘ Blocking / Non-Blocking μ 리
λ€λ₯Έ μ£Όμ²΄κ° μμ μ ν λ μμ μ΄ μ μ΄κΆμ΄ μλμ§ μλμ§λ‘ ꡬλΆν μ μμ΅λλ€.
Sync VS Async
π‘ Sync(λκΈ°)
- μμ μ λμμ μννκ±°λ, λμμ λλκ±°λ, λλλ λμμ μμν¨μ μλ―Έν©λλ€.
- λκΈ°λ μμ μ 주체μ±μ λ³ΈμΈμ΄ κ°μ§κ³ μμ΅λλ€.
- λ³ΈμΈμ΄ λ€λ₯Έ 주체μμκ² μμ μ μꡬ(ν¨μ νΈμΆ)νλ€λ©΄ λ³ΈμΈμ λ€λ₯Έ 주체μμ νμκ° μμ ν λλκ±°λ, λ€λ₯Έ 주체μκ° κ²°κ³Όλ₯Ό λλ €μ€ λκΉμ§ κΈ°λ€λ Έλ€κ° μμ μ΄ λ¨μ μΌμ μνν©λλ€. μ΄λ¬ν λ§₯λ½μμλ Blockingκ³Ό λΉμ·νκ±° κ°μ΅λλ€.
- λν λ³ΈμΈμ λ€λ₯Έ 주체μμ μμ μ΄ μλ£λμ§ μμ μνλΌλ©΄ λ€λ₯Έ 주체μμκ² μ§μμ μΌλ‘ λ¬Όμ΄λ³΄λ©΄μ μμ μλ£ μ¬λΆλ₯Ό νμΈν μ μμ΅λλ€.
- μ¦ λ€λ₯Έ 주체μκ° κ²°κ³Όλ₯Ό μΈμ λλ €μ£Όλμ§ μκ΄μ μμ§λ§ λ³ΈμΈμ μ μ₯μμλ λ€λ₯Έ 주체μμ μμ μλ£ μ¬λΆλ₯Ό μλ κ²μ΄ μ€μν©λλ€.
π‘ Async(λΉλκΈ°)
- μμ, μ’ λ£κ° μΌμΉνμ§ μμΌλ©°, λλλ λμμ μμμ νμ§ μμμ μλ―Έν©λλ€.
- λΉλκΈ°λ μμ μ 주체μ±μ λ€λ₯Έ 주체μκ° κ°μ§κ³ μμ΅λλ€.
- λΉλκΈ° μν©μμλ λ³ΈμΈμ΄ λ€λ₯Έ 주체μμκ² μμ μ μꡬνλ©΄μ κ²°κ³Όκ° μλ£λλ©΄ μνν΄λ¬λΌκ³ μμ²νλ μ½λ°± ν¨μλ κ°μ΄ λκΉλλ€.
- λ³ΈμΈμ λ€λ₯Έ 주체μμκ² μμ μ μμ²ν ν μμ²ν μμ μ λν΄μλ μ무κ²λ μ κ²½μ°μ§ μκ³ , μμ μ΄ ν μΌμ μ΄μ΄μ μ²λ¦¬ν©λλ€.
- λκΈ° μν©μμλ ν΄λΉ μμ μ λν μλ£ μ± μμ λ³ΈμΈμ΄ κ°μ§κ³ μμμ§λ§, λΉλκΈ° μν©μμλ μμ²μ λ°μ λ€λ₯Έ 주체μκ° μ€νλ € ν΄λΉ μμ μ λν μ± μμ κ°μ§κ³ μμ΅λλ€.
- μμ²μ λ°μ λ€λ₯Έ 주체μκ° μ½λ°± ν¨μλ‘ ν΄λΉ μμ μ μ²λ¦¬νκ³ μλ£ν©λλ€.
π‘ Sync / Async μ 리
κ²°κ³Όλ₯Ό λ°ννμλ μμ μλ£μ μ¬λΆλ₯Ό λκ° λ μ κ²½μ°λλμ λ°λΌ ꡬλΆν μ μμ΅λλ€.
4κ°μ§ μ‘°ν©
Blocking | Non-Blocking | |
Sync | Read/Write | Read/Write O_NONCLOCK |
Async | i/O multiplexing | AIO |
π‘ Sync Blocking I/O
- μ΄ν리μΌμ΄μ μ΄ ν¨μλ₯Ό νΈμΆνμ λ κ²°κ³Όλ₯Ό λ°ννκΈ°κΉμ§ λκΈ°νκ² λ©λλ€. μ΄λ¬ν λκΈ° λμ μ무κ²λ ν μ μλ€λ κ²μ΄ κ°μ₯ ν° λ¨μ μ λλ€.
π‘ Sync Non-Blocking I/O
- μ΄ν리μΌμ΄μ μ΄ ν¨μλ₯Ό νΈμΆν λ λ°λ‘ 볡κ·νμ¬ μμ μ μΌμ μ²λ¦¬ν©λλ€. νμ§λ§ μ΄ν리μΌμ΄μ μ΄ νΈμΆν ν¨μκ° λλ¬μμ μκΈ° μν΄μ μ£ΌκΈ°μ μΌλ‘ μλ£λμλμ§ νμΈ(Sync)μ ν΄μΌν©λλ€.
- μ£ΌκΈ°μ μΌλ‘ νμΈνλ μ¬μ΄ λ€λ₯Έ μμ μ ν μ μμ§λ§ κ³μ νμΈν΄μΌνλ λΉν¨μ¨μ±μ κ°μ§κ³ μμ΅λλ€.
π‘ Async Blocking I/O
- μ΄ν리μΌμ΄μ μ΄ ν¨μλ₯Ό νΈμΆνμ λ ν΄λΉ μμ μ΄ μλ£λ λ κΉμ§ λκΈ°μνκ° λ©λλ€. ν¨μ νΈμΆ ν λ°λ‘ 리ν΄μ λ°μ§λ§ μ΄ν리μΌμ΄μ μ λ€λ₯Έ μμ μ νμ§ μκ³ λκΈ° μνκ° λ©λλ€.
- ν¨μμμ μμ μ΄ λλ μλ£λ¨μ μ΄ν리μΌμ΄μ μκ² μ리면μ(Async) μ΄ν리μΌμ΄μ μ λκΈ° μνκ° νλ¦¬κ² λ©λλ€.
π‘ Async Non-Blocking I/O
- μ΄ν리μΌμ΄μ μ ν¨μλ₯Ό νΈμΆνκ³ μμ μ΄ μλ£λ λκΉμ§ λκΈ°νμ§ μκ³ μμ μ μμ μ μνν©λλ€.
- ν¨μλ μμ μ μλ£νλ©΄ κ²°κ³Όλ₯Ό μ΄ν리μΌμ΄μ μκ² μλ €μ£Όλ©°, μ΄ν리μΌμ΄μ μ νΈμΆν ν¨μκ° μμ μ΄ μλ£λλμ§ μ§μ νμΈνμ§ μμ΅λλ€.
μ°Έκ³ )
https://www.youtube.com/watch?v=IdpkfygWIMk
https://www.youtube.com/watch?v=oEIoqGd-Sns
https://www.youtube.com/watch?v=XNGfl3sfErc
https://ivvve.github.io/2019/10/06/etc/sync&blocking/
https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/
https://www.youtube.com/watch?v=mb-QHxVfmcs
'JAVA > JAVAκΈ°λ³Έ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ°μμ κ΅μ°©μν (0) | 2023.03.29 |
---|---|
RabbitMQλ? (0) | 2022.06.14 |
JAVA - String Constant Poolμ΄λ (0) | 2022.05.15 |
JAVA - λλ€μμ΄λ? (0) | 2022.02.10 |
JAVA - μ λ€λ¦μ΄λ? (0) | 2022.01.30 |
- Total
- Today
- Yesterday
- spring boot redisson λΆμ°λ½ ꡬν
- spring boot poi excel download
- μλ° λ°±μλ κ°λ°μ μΆμ² λμ
- redis sorted set
- spring boot redisson sorted set
- java ThreadLocal
- spring boot μμ λ€μ΄λ‘λ
- space based architecture
- redis sorted setμΌλ‘ λκΈ°μ΄ κ΅¬ν
- λ μ΄μ΄λ μν€ν μ²λ
- service based architecture
- κ³΅κ° κΈ°λ° μν€ν μ²
- microkernel architecture
- νΈλμμ λ μμλ°μ€ ν¨ν΄ μ€νλ§ λΆνΈ μμ
- JDK Dynamic Proxyμ CGLIBμ μ°¨μ΄
- νΈλμμ λ μμλ°μ€ ν¨ν΄ μ€νλ§λΆνΈ
- transactional outbox pattern
- λλ€ ννμ
- polling publisher spring boot
- spring boot excel download paging
- pipeline architecture
- pipe and filter architecture
- spring boot excel download oom
- @ControllerAdvice
- spring boot redisson destributed lock
- μλΉμ€ κΈ°λ° μν€ν μ²
- java userThreadμ DaemonThread
- transactional outbox pattern spring boot
- spring boot redis λκΈ°μ΄ κ΅¬ν
- redis λκΈ°μ΄ κ΅¬ν
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |