Lazy
์ฝํ๋ฆฐ์ lazy
๋ ์ง์ฐ ์ด๊ธฐํ๋ฅผ ์ ๊ณตํ๋ ์ค์ํ ๊ธฐ๋ฅ ์ค ํ๋๋ก, ์ ์ธ๋ ํ๋กํผํฐ๊ฐ ์ค์ ๋ก ์ฌ์ฉ๋ ๋ ์ด๊ธฐํ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ณธ ๊ธ์์๋ lazy
๊ฐ ์ปดํ์ผ ์์ ์ ์ด๋ป๊ฒ ๋์ํ๋ฉฐ, ์ปดํ์ผ ํ ์ด๋ค ์ฝ๋๋ก ๋ณํ๋๋์ง๋ฅผ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
1. lazy์ ๋์ ๊ฐ์
lazy
๋ ์ฝํ๋ฆฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ํจ์๋ก, Lazy<T>
์ธํฐํ์ด์ค๋ฅผ ํ์ฉํฉ๋๋ค. ์ด ์ธํฐํ์ด์ค๋ getValue()
๋ฉ์๋๋ฅผ ํตํด ์ด๊ธฐํ๋ ๊ฐ์ ๋ฐํํ๋ฉฐ, ์ด๊ธฐํ๋์ง ์์๋ค๋ฉด ๋๋ค๋ฅผ ์คํํด ๊ฐ์ ์์ฑํฉ๋๋ค.
์ ์ฝ๋๋ ์ค์ ๋ก ์ฌ์ฉ๋ ๋ ์ด๊ธฐํ๊ฐ ๋ฐ์ํ๋ฉฐ, ์ดํ์๋ ์บ์๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
2. ์ปดํ์ผ ์ ์ฝํ๋ฆฐ ์ฝ๋
์ปดํ์ผ ์ ์ lazy
์ฝ๋๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์๋์ ๊ฐ์ด ์์ฑํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
3. ์ปดํ์ผ ํ ๋์ปดํ์ผ๋ Java ์ฝ๋
์ ์ฝ๋๋ฅผ ์ปดํ์ผํ ํ ๋์ปดํ์ผํ๋ฉด ๋ค์๊ณผ ๊ฐ์ Java ์ฝ๋๋ก ๋ณํ๋ฉ๋๋ค.
๋ถ์
lazy
ํ๋กํผํฐ๋Lazy<T>
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ก ๋ณํ๋ฉ๋๋ค.์ด๊ธฐํ ๋ธ๋ก์ ๋๋ค๋ก ๊ฐ์ธ์ ธ
Lazy
๊ฐ์ฒด์ ์์ฑ์์ ์ ๋ฌ๋ฉ๋๋ค.getValue()
๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ๋๋ค๊ฐ ์คํ๋์ด ๊ฐ์ ์ด๊ธฐํํ๊ฑฐ๋, ์ด๋ฏธ ์ด๊ธฐํ๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
4. Lazy
๊ตฌํ์ฒด
Lazy
๊ตฌํ์ฒด์ฝํ๋ฆฐ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ธ ๊ฐ์ง Lazy
๊ตฌํ์ฒด๋ฅผ ์ ๊ณตํฉ๋๋ค.
4.1 ๊ธฐ๋ณธ ๊ตฌํ์ฒด: synchronizedLazyImpl
synchronizedLazyImpl
lazy
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ๊ฒ ๋์ํ๊ธฐ ์ํด synchronizedLazyImpl
์ ์ฌ์ฉํฉ๋๋ค.
4.2 ๋ค๋ฅธ ๊ตฌํ์ฒด: UnsafeLazyImpl
, SafePublicationLazyImpl
UnsafeLazyImpl
, SafePublicationLazyImpl
UnsafeLazyImpl
: ๋๊ธฐํ๋ฅผ ์ฌ์ฉํ์ง ์์ ์ฑ๋ฅ์ด ์ข์ง๋ง, ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์๋ ์์ ํ์ง ์์ต๋๋ค.SafePublicationLazyImpl
: ์ด๊ธฐํ๊ฐ ํ ๋ฒ ์ด์ ๋ฐ์ํ ์ ์์ผ๋, ์ต์ข ์ ์ผ๋ก ์ด๊ธฐํ๋ ๊ฐ์ ๋์ผํฉ๋๋ค.
LazyThreadSafetyMode
๋ฅผ ํตํด ๊ตฌํ์ฒด๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
5. lazy ํ๋กํผํฐ์ ์ ์ฒด ๋์ ํ๋ฆ
์ปดํ์ผ ์์
by lazy
๋ ๋ด๋ถ์ ์ผ๋กLazy
๊ตฌํ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ด๊ธฐํ ๋๋ค๋ฅผ ์ ๋ฌํฉ๋๋ค.ํ๋กํผํฐ ์ ๊ทผ์
getValue()
๋ฉ์๋ ํธ์ถ๋ก ๋์ฒด๋ฉ๋๋ค.
์คํ ์์
์ฒซ ๋ฒ์งธ ํธ์ถ ์
getValue()
๊ฐ ์คํ๋์ด ๋๋ค๊ฐ ํธ์ถ๋ฉ๋๋ค.์ด๊ธฐํ๋ ๊ฐ์ด
_value
์ ์ ์ฅ๋ฉ๋๋ค.์ดํ ํธ์ถ์
_value
์ ์ ์ฅ๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
Last updated
Was this helpful?