[Java] synchronized ๋ธ”๋Ÿญ ์ธ์ž

synchronized ๋ธ”๋Ÿญ์€ ๋Œ€ํ‘œ์ ์ธ ์ž๋ฐ”์˜ ๋™๊ธฐํ™” ๋ฌธ๋ฒ•์ด๋‹ค.
์ธ์ž๋กœ ์ž ๊ธˆ์˜ ๊ธฐ์ค€์ด ๋  ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๊ณ , ๊ทธ๊ฑธ๋กœ ํฌ๋ฆฌํ‹ฐ์ปฌ ์„น์…˜์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

๊ทผ๋ฐ ํ”ํžˆ ์ฝ”๋“œ๋“ค์„ ๋ณด๋ฉด this๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธฐ๋Š”๊ฒŒ ๋ณด์ด๊ณค ํ•œ๋‹ค. image

image ๊ฐ์ฒด ์ž๊ธฐ์ž์‹ ์„ ๋™๊ธฐํ™”์— ๋Œ€ํ•œ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์–ด์ฐจํ”ผ ์ด ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๋Œ๋”๋ผ๋„ ๊ฐ์ฒด๋Š” ํ•˜๋‚˜๋‹ˆ๊นŒ,
๊ทธ๋ ‡๊ฒŒ ํ‹€๋ฆฐ ์ฝ”๋“œ๋„ ์•„๋‹ˆ๊ณ  ๋Œ€์ฒด๋กœ๋Š” ์ž˜ ์ž‘๋™ํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฐฉ๋ฒ•์€ ๋ฌด์กฐ๊ฑด ๊ฐ์ฒด ๋‹จ์œ„๋กœ๋งŒ ์ž ๊ธˆ์ด ์„ค์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์œ ์—ฐํ•œ ํ๋ฆ„์˜ ๊ตฌํ˜„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ฒŒ๋‹ค๊ฐ€ this๋กœ ์žกํžŒ ์ž ๊ธˆ์€ Thread.join์œผ๋กœ ํ’€๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.(์ž์„ธํžˆ๋Š” ๋ชจ๋ฆ„)

์—ฌํŠผ ๋ฐ”๋žŒ์งํ•œ ๊ตฌ์กฐ๋กœ ๋™๊ธฐํ™”๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, Object ๋“ฑ์˜ ํƒ€์ž…์œผ๋กœ ์ž ๊ธˆ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์„ ์–ธํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.
์ด๋ ‡๊ฒŒ image

image



์ฐธ์กฐ
https://www.slipp.net/questions/179
https://stackoverflow.com/questions/442564/avoid-synchronizedthis-in-java/39438754