atomicinteger
Last updated
Last updated
An int value that may be updated atomically
์์์ ์ธ int ์ ๋ฐ์ดํธ๋ฅผ ๋ณด์ฅํด์ฃผ๋ ํด๋์ค์ธ๋ฏ.
์๋ง๋ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์๋ ๋ฐ์ดํฐ ๋ถ์ผ์น์ฑ์ ํผํ ์ ์์๋ฏํจ.
์ฌ๋ฌ ์ค๋ ๋๊ฐ ํ๋์ int value๋ฅผ ์ฆ๊ฐ์ํค๋ ๊ฒ๊ณผ ๊ฐ์..
uses combination of volatile & CAS (compare and swap) to achieve thread-safety for Integer Counter
ํ๋ฐ์ฑ์ด๋ผ๋ ๋จ์ด๋ป.
์๋ง ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ๋ฐ์ฑ์ด์ด์, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ฒ ๋ค๋ ๋ป์ผ๋ก ํ๊ฒ ์๋๊น.
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊น์ง ์ ๊ทผํด์ผํ๋, CPU ์บ์์ ์ ๊ทผํ๋ ๋น์ฉ๋ณด๋ค๋ ์์คํ ์์์ ๋ง์ด ์๋ชจํ ๋ฏ.
๋ณ์์ ๊ฐ์ Readํ ๋๋ง๋ค CPU cache์ ์ ์ฅ๋ ๊ฐ์ด ์๋ Main Memory์์ ์ฝ๋ ๊ฒ.
๋ณ์์ ๊ฐ์ Writeํ ๋๋ง๋ค Main Memory์ ๊น์ง ์์ฑํ๋ ๊ฒ
์ฆ CPU์์ ์ ๊ณตํ๋ cache์์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋, Main Memeory๊น์ง ๊ฐ์ ๊ฐ์ ๊ฐ์ ธ์ด.
๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๊ฐ์ฅ ์ต์ ์ ๊ฐ์ ๋ณด์ฅ. (์ฝ์ ๋)
write ํ๋ ๊ฒฝ์ฐ์, ํน์ ์ค๋ ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฌด์๋ ์ ์์. (์๋ ์ํฉ)
์๋ง๋ main memory์ 2๋ผ๋ ๊ฐ์ด ์ ์ฅ๋๋ ๊ฒ์ ์๋ํ๊ฒ ์ง๋ง.. CPU2 cache ์ ์ ์ฅ๋ +1 ์ ๊ฐ์ด ๋ฌด์๋จ.
java.util.concurrent.atomic ํจํค์ง์ AtomicInteger๋ฅผ ํฌํจํ ๋ค๋ฅธ ํด๋์ค๋ค๋ ์์.
AtomicBoolean, AtomicIntegerArray, AtomicLong...
https://www.digitalocean.com/community/tutorials/atomicinteger-java
https://www.javacodemonk.com/what-is-atomicinteger-class-and-how-it-works-internally-1cda6a56
https://www.baeldung.com/java-volatile
https://www.geeksforgeeks.org/volatile-keyword-in-java/#:~:text=For%20Java%2C%20%E2%80%9Cvolatile%E2%80%9D%20tells,scope%20of%20the%20program%20itself.