๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กatomic ํด๋ž˜์Šค (1)

Unfazedโ—๏ธ๐ŸŽฏ

์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ Thread Safety

Thread safety์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ์€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ์ฝ”๋“œ ๋ถ€๋ถ„์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ์„ ๋งํ•œ๋‹ค. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋ฐ์ดํ„ฐ ์†์ƒ์ด๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํ–‰๋™์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.์ด์— ๋ฐ˜ํ•ด, ์Šค๋ ˆ๋“œ ์‹คํ–‰์˜ ์ˆœ์„œ๋‚˜ ํƒ€์ด๋ฐ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์Ÿ ์ƒํƒœ์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค. ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋Š” ๋™์‹œ์— ๋˜๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ count ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ count ๋ณ€์ˆ˜๊ฐ€ ์žˆ๊ณ  2๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ 'increment()' ๋ฉ”์†Œ๋“œ๋ฅผ ๋™์‹œ์— ํ˜ธ์ถœํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด ๋ณด์žpublic class Counter{..