์คํธ๋ฆผ
- ๋ฐ์ดํฐ์์ค ์ถ์ํ + (์์ฃผ์ฌ์ฉํ๋)๋ฉ์๋ ์ ์
- ๋ฐ์ดํฐ์์ค ์ถ์ํ: ๋ฐ์ดํฐ์์ค๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ค๋ฃจ๋ ๊ฒ=์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ↑ (๋ฐฐ์ด, ์ปฌ๋ ์ , ํ์ผ๋ฐ์ดํฐ ๋ชจ๋ ๊ฐ๋ฅํจ)
- ์ ํ์คํธ๋ฆผ/๋ฌดํ์คํธ๋ฆผ์ด ์์.
์คํธ๋ฆผ์ ํน์ง
โ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- ๋ฐ์ดํฐ ์์ค๋ก๋ถํฐ ์ฝ๊ธฐ๋ง ํจ. ๋ณ๊ฒฝ์ X.
- ํ์์ ๋ฐํ์ด ๊ฐ๋ฅํจ(๊ฒฐ๊ณผ๋ฅผ ๋ด์ ์ปฌ๋ ์ /๋ฐฐ์ด)
โ ์คํธ๋ฆผ์ ์ผํ์ฉ์ด๋ค.
- ํ ๋ฒ ์ฌ์ฉํ๋ฉด(์ต์ข ์ฐ์ฐ์ํ) ์คํธ๋ฆผ ๋ซํ์ ๋ค์ ์ฌ์ฉํ ์ ์์. ํ์์ ๋ค์ ์์ฑํ๋ฉด ๋จ.
โ ์คํธ๋ฆผ์ ์์ ์ ๋ด๋ถ๋ฐ๋ณต์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ๋ด๋ถ๋ฐ๋ณต=๋ฐ๋ณต๋ฌธ์ ๋ฉ์๋ ๋ด๋ถ์ ์จ๊ธธ ์ ์๋ ๊ฒ.
โ ์คํธ๋ฆผ์ ์ฐ์ฐ์ ์ค๊ฐ์ฐ์ฐ๊ณผ ์ต์ข ์ฐ์ฐ์ด ์๋ค.
- ๋ค์ํ ์ฐ์ฐ์ ์ ๊ณตํด์ ๋ณต์กํ ์์ ๋ค์ ๊ฐ๋จํ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํจ.
- *์ค๊ฐ์ฐ์ฐ: ์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ ์คํธ๋ฆผ์. ์คํธ๋ฆผ์ ์ฐ์ํด์ ์ค๊ฐ์ฐ์ฐ์ด ๊ฐ๋ฅํจ.
- *์ต์ข ์ฐ์ฐ: ์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ ์คํธ๋ฆผX. ์คํธ๋ฆผ์ ์์๋ฅผ ์๋ชจํ๋ฏ๋ก ๋จ ํ ๋ฒ๋ง ๊ฐ๋ฅํจ
โ ์ง์ฐ๋ ์ฐ์ฐ์ ํ๋ค.
- ์ต์ข ์ฐ์ฐ์ด ์ํ๋๊ธฐ ์ ๊น์ง๋ ์ค๊ฐ์ฐ์ฐ ์ํX (๋ฌดํ์คํธ๋ฆผ์๋ distinct()์ค๋ณต์ ๊ฑฐ๊ฐ ๊ฐ๋ฅํ ์ด์ )
- ์ฆ๊ฐ์ ์ธ ์ฐ์ฐ์ด ์๋๋ฉฐ ์ด๋ค ์ํ์ ํด์ผํ๋์ง ์ง์ ๋ง ํด๋ . ์ต์ข ์ฐ์ฐ์ด ํธ์ถ๋๋ฉด ์ง์ ๋ ์ค๊ฐ ์ฐ์ฐ์ด ์คํ๋จ.
โ ๋ณ๋ ฌ์คํธ๋ฆผ์ด ๊ฐ๋ฅํ๋ค.
- ๋ด๋ถ์ ์ผ๋ก fork&join ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํด์ ์๋์ ์ผ๋ก ์ฐ์ฐ์ ๋ณ๋ ฌ๋ก ์ํํจ.(pararell( )์ด์ฉ)
- ๋ณ๋ ฌ์์ ์ด ๋ํดํธ์ด๊ณ ๋ณ๋ ฌํ์ง ์์ ๋๋ sequential( )๋ฉ์๋ ์ฌ์ฉ.
โ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ์์ค๋ฅผ ๋ค๋ฃจ๋ ์คํธ๋ฆผ์ ์ ๊ณตํ๋ค.
- ์คํ ๋ฐ์ฑ&์ธ๋ฐ์ฑ์ผ๋ก ์ธํ ๋นํจ์จ์ ์ค์ด๊ธฐ ์ํด ๋ฐ์ดํฐ์์ค์ ์์๋ฅผ ๊ธฐ๋ณธํ์ผ๋ก ๋ค๋ฃจ๋ ์คํธ๋ฆผ์ ์ ๊ณตํจ.
- ๊ธฐ๋ณธํ๋ง ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ๊ด๋ จ๋ ์ ์ฉํ ๋ฉ์๋๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํจ
- ex) IntStream, LongStream, DoubleStream
'๐ฅ๏ธ ๋ฐฑ์๋ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ch.14] ์คํธ๋ฆผ์ ์ค๊ฐ์ฐ์ฐ (0) | 2023.11.15 |
---|---|
[ch.14] ์คํธ๋ฆผ์ ์์ฑ (0) | 2023.11.15 |
[ch.14] java.util.function ํจํค์ง (0) | 2023.11.15 |
[ch.14] ๋๋ค์ (0) | 2023.11.15 |
[CH.13] ์ฐ๋ ๋์ ๋๊ธฐํ(Lock) (0) | 2023.11.15 |