λ°˜μ‘ν˜•

ν”„λ‘œμ„ΈμŠ€

μ„€λͺ…

싀행쀑인 ν”„λ‘œκ·Έλž¨

β€» λ©€ν‹° ν”„λ‘œμ„ΈμŠ€

λ‹€μˆ˜μ˜ 데이터 μ €μž₯ μ˜μ—­μ„ 가짐 (λ‹€μˆ˜μ˜ Tλ©”λͺ¨λ¦¬λ₯Ό κ°€μ§€λŠ” ꡬ쑰)
ν”„λ‘œμ„ΈμŠ€ 끼리 μ„œλ‘œ μ°Έμ‘° λΆˆκ°€λŠ₯ (곡간 μ˜μ—­ μžμ²΄κ°€ 뢄리)

 

μŠ€λ ˆλ“œ

μ„€λͺ…

ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨ λ‚΄ μ—¬λŸ¬κ°œμ˜ μ‹€ν–‰ 흐름

β€» λ©€ν‹° μŠ€λ ˆλ“œ
Tλ©”λͺ¨λ¦¬ λͺ¨λΈ(μŠ€νƒœν‹±, μŠ€νƒ, νž™)의 μŠ€νƒ μ˜μ—­(λ©”μ†Œλ“œ μ˜μ—­)을 μŠ€λ ˆλ“œ 갯수 만큼 λΆ„ν• ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 것.
μ„œλ‘œ λ‹€λ₯Έ μŠ€λ ˆλ“œμ˜ μŠ€νƒ μ˜μ—­μ€ μ ‘κ·Ό λͺ»ν•˜μ§€λ§Œ μŠ€νƒœν‹±μ˜μ—­, νž™ μ˜μ—­μ€ κ³΅μœ ν•΄μ„œ μ‚¬μš©ν•˜λŠ” ꡬ쑰.
λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ λŒ€λΉ„ λ©”λͺ¨λ¦¬λ₯Ό 적게 μ‚¬μš©ν•˜λŠ” ꡬ쑰.!!
μ „μ—­ λ³€μˆ˜ μ‚¬μš©μ‹œ λ¬Έμ œκ°€ 될 κ°€λŠ₯μ„± 쑴재 ((λ³€μˆ˜μ°Έμ‘°)락을 κ±°λŠ” 방법이 μžˆλ‹€κ³  함 (?))

 

μŠ€λ ˆλ“œν’€

μŠ€λ ˆλ“œ 풀은 μž‘μ—…μ²˜λ¦¬μ— μ‚¬μš©λ˜λŠ” μŠ€λ ˆλ“œλ₯Ό μ œν•œλœ 개수만큼 정해놓고 μž‘μ—…ν (Queue)에 λ“€μ–΄μ˜€λŠ” μž‘μ—…λ“€μ„ ν•˜λ‚˜μ”© μŠ€λ ˆλ“œκ°€ 맑아 처리.
정해진 큐에 λ“€μ–΄μ˜¨ μž‘μ—…μ„ ν•˜λ‚˜μ”© μ²˜λ¦¬ν•˜κΈ°λ•Œλ¬Έμ—, μš”μ²­μ΄ λŠ˜μ–΄λ‚˜λ„ 전체 큐 κ°―μˆ˜λŠ” λŠ˜μ–΄λ‚˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ„±λŠ₯이 κΈ‰κ²©νžˆ μ €ν•˜λ˜μ§€ μ•ŠμŒ.

ExecutorService

ExecutorServiceλŠ” μŠ€λ ˆλ“œμ—μ„œ 비동기 적으둜 μž‘μ—…μ„ μ‹€ν–‰ν•  μˆ˜μžˆλŠ” μΈν„°νŽ˜μ΄μŠ€.
java.util.concurrent νŒ¨ν‚€μ§€μ— 있고, μŠ€λ ˆλ“œ 풀을 μœ μ§€ κ΄€λ¦¬ν•˜κ³  μž‘μ—…μ„ ν• λ‹Ήν•˜λŠ” 데 λ„μ›€μ΄λœλ‹€. 
λ˜ν•œ μž‘μ—… μˆ˜κ°€ μ‚¬μš© κ°€λŠ₯ν•œ μŠ€λ ˆλ“œλ³΄λ‹€ λ§Žμ„ 경우 μ‚¬μš© κ°€λŠ₯ν•œ μŠ€λ ˆλ“œκ°€μžˆμ„ λ•ŒκΉŒμ§€ μž‘μ—…μ„ λŒ€κΈ°μ—΄μ— λ„£λŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.

 

 

Fork Join Framework

병렬화 ν•  수 μžˆλŠ” μž‘μ—…μ„ μž¬κ·€μ μœΌλ‘œ μž‘μ€ μž‘μ—…μœΌλ‘œ λΆ„ν•  ν›„ μ„œλΈŒνƒœμŠ€ν¬μ— 각각의 κ²°κ³Όλ₯Ό 합쳐전체 κ²°κ³Όλ₯Ό λ§Œλ“¬

Fork: 데이터 반볡적으둜 뢄리
Join: μ„œλΈŒ κ²°κ³Όλ₯Ό κ²°ν•©ν•˜μ—¬ μ΅œμ’… κ²°κ³Όλ₯Ό λ§Œλ“¬

 

 

ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œμ˜ 차이

μ„€λͺ…

ν”„λ‘œμ„ΈμŠ€λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ„ κ³΅μœ ν•˜λ©°, μŠ€λ ˆλ“œλŠ” μŠ€νƒμ˜μ—­μ„ 생성함

 


μ°Έκ³ 

https://wikibook.co.kr/java-oop-for-spring/ (μ±…: μŠ€ν”„λ§ μž…λ¬Έμ„ μœ„ν•œ μžλ°” 객체지ν–₯의 원리와 이해)
https://3dmpengines.tistory.com/2003

https://www.javatpoint.com/java-executorservice

 

ν”„λ‘œμ„ΈμŠ€&μ“°λ ˆλ“œμ™€ λ©”λͺ¨λ¦¬(μŠ€νƒ, λ ˆμ§€μŠ€ν„°)

Threadλž€ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨λ‚΄μ—μ„œ μ—¬λŸ¬ 개의 μ‹€ν–‰ 흐름을 두기 μœ„ν•œ λͺ¨λΈ ν•˜λ‚˜μ˜ ν”„λ‘œμ„Έμ„œ(μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨)μ—μ„œ 각 독립적인 일의 λ‹¨μœ„μΈ μŠ€λ ˆλ“œ(Thread)둜 μ—¬λŸ¬ μž‘μ—…μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€. μ¦‰ ν•˜

3dmpengines.tistory.com

https://cheershennah.tistory.com/170

https://www.geeksforgeeks.org/thread-pools-java/

https://black9p.github.io/2018/01/20/병렬-데이터-μ²˜λ¦¬μ™€-μ„±λŠ₯/

λ°˜μ‘ν˜•

'개발 > java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

WebClient μ‚¬μš©μ‹œ μ£Όμ˜ν• μ !  (0) 2023.08.13
[RxJava] λ¦¬μ•‘ν‹°λΈŒ ν”„λ‘œκ·Έλž˜λ°  (0) 2022.05.02
java - call by value, call by reference  (0) 2021.07.11
μžλ°”-λžŒλ‹€(lambda)  (0) 2021.05.28
jdbc, mybatis, jpa  (0) 2018.12.31

+ Recent posts