"์•ˆ๋…•, ์•„๋ฏธ๊ณ !"

"์•ˆ๋…•, ์—˜๋ฆฌ!"

"ํœ˜๋ฐœ์„ฑ ์ˆ˜์‹์–ด์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ญ”์ง€ ์•„์„ธ์š”?"

"์‹ค๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

"๊ทธ๋Ÿผ ์ž˜ ๋“ค์–ด. ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ์ˆ ์ ์ธ ์„ธ๋ถ€ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค."

"์ปดํ“จํ„ฐ์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์—ญ(์ผ๋ฐ˜) ๋ฉ”๋ชจ๋ฆฌ์™€ ํ”„๋กœ์„ธ์„œ์— ๋‚ด์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋‚ด์žฅ ํ”„๋กœ์„ธ์„œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ ˆ์ง€์Šคํ„ฐ, ์ฒซ ๋ฒˆ์งธ ์ˆ˜์ค€ ์บ์‹œ(L1), ๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€ ์บ์‹œ(L2) ๋ฐ ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€(L3)."

"์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์†๋„๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ ˆ์ง€์Šคํ„ฐ, ํ”„๋กœ์„ธ์„œ ์บ์‹œ(L1, L2, L3), ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ(๊ฐ€์žฅ ๋Š๋ฆฐ)์ž…๋‹ˆ๋‹ค."

"๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ์™€ ํ”„๋กœ์„ธ์„œ ์บ์‹œ๋Š” ๋งค์šฐ ๋‹ค๋ฅธ ์†๋„๋กœ ์ž‘๋™ํ•˜๋ฏ€๋กœ Java ๋จธ์‹ ์€ ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ๋กœ์ปฌ ์Šค๋ ˆ๋“œ ๋ฉ”๋ชจ๋ฆฌ(ํ”„๋กœ์„ธ์„œ ์บ์‹œ)์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."

"์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"

"๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์€ Java ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์žˆ์–ด์„œ๋Š” ๋งค์šฐ ์ง€๋Šฅ์ ์ž…๋‹ˆ๋‹ค."

"ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ ๋‚ด๊ฐ€ ์ด ๋ง์„ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์ž‘์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ๋ณ€์ˆ˜๋กœ ์ž‘์—…ํ•  ๋•Œ ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ์ž์ฒด ๋กœ์ปฌ ์บ์‹œ์— ๋ณต์‚ฌ๋ณธ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ์Šค๋ ˆ๋“œ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ž์ฒด ๋ณ€์ˆ˜ ์‚ฌ๋ณธ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

"๊ธ€์Ž„, ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ˆ?"

"Java์˜ ์ž‘์„ฑ์ž๋Š” ์ด ์ƒํ™ฉ์— ๋Œ€ํ•ด ํŠน๋ณ„ํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ํœ˜๋ฐœ์„ฑ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์•ก์„ธ์Šค๋˜๋Š” ๊ฒฝ์šฐ ๋ณ€์ˆ˜๋ฅผ ํœ˜๋ฐœ์„ฑ ์ˆ˜์ •์ž๋กœ ํ‘œ์‹œํ•ด์•ผ Java ์‹œ์Šคํ…œ์ด ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์บ์‹œ์— ๋„ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์™ธ๋ชจ:"

public volatile int count = 0;

"์•„, ๊ธฐ์–ต๋‚˜๋„ค์š”. ๋‹น์‹ ์€ ์ด๋ฏธ ์ด๊ฒƒ์„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ ์ด๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."

"๋ฌผ๋ก ์ด์ฃ . ํ•˜์ง€๋งŒ ๋‹น์‹ ์€ ๋‚ด๊ฐ€ ๋งํ–ˆ์„ ๋•Œ๋งŒ ๊ทธ๊ฒƒ์„ ๊ธฐ์–ตํ–ˆ์Šต๋‹ˆ๋‹ค."

"์–ด, ๊ธ€์Ž„์š”, ์กฐ๊ธˆ ์žŠ์—ˆ๋„ค์š”."

"๋ฐ˜๋ณต์€ ๋ฐฐ์›€์˜ ์–ด๋จธ๋‹ˆ!"

"๋‹ค์Œ์€ ํœ˜๋ฐœ์„ฑ ์ˆ˜์ •์ž์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ํœ˜๋ฐœ์„ฑ ์ˆ˜์ •์ž๋Š” ๋ณ€์ˆ˜๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฝ๊ณ  ์“ธ ์ˆ˜๋งŒ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝ๋œ๋‹ค๋Š” ๋ณด์žฅ์€ ์—†์Šต๋‹ˆ๋‹ค."

"์ฐจ์ด์ ์ด ๋ญ์•ผ?"

"๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค."

์•”ํ˜ธ ์‹ค์ œ๋กœ ์ผ์–ด๋‚˜๋Š” ์ผ: ์„ค๋ช…
count++
register = count;

register = register+1;

count = register;
1๋‹จ๊ณ„.
๋ณ€์ˆ˜ ์นด์šดํŠธ์˜ ๊ฐ’์ด ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ”„๋กœ์„ธ์„œ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„.
ํ”„๋กœ์„ธ์„œ ๋‚ด๋ถ€์—์„œ ๋ ˆ์ง€์Šคํ„ฐ ๋ณ€์ˆ˜๊ฐ€ 1์”ฉ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

3๋‹จ๊ณ„.
๋ณ€์ˆ˜ ๊ฐ’์ด ํ”„๋กœ์„ธ์„œ์—์„œ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.

"์™€์šฐ! ๊ทธ๋Ÿผ ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ํ”„๋กœ์„ธ์„œ์—์„œ๋งŒ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฑด๊ฐ€์š”?"

"๋„ค."

"๊ทธ๋ฆฌ๊ณ  ๊ฐ’์€ ์•ž๋’ค๋กœ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ”„๋กœ์„ธ์„œ๋กœ ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐ˜๋Œ€๋กœ?"

"๋„ค."

"ํœ˜๋ฐœ์„ฑ ์ˆ˜์ •์ž๋Š” ๋ณ€์ˆ˜ ์นด์šดํŠธ์— ์•ก์„ธ์Šคํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค(1๋‹จ๊ณ„). ๊ทธ๋ฆฌ๊ณ  ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒˆ ๊ฐ’์„ ํ• ๋‹นํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ™•์‹คํžˆ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(3๋‹จ๊ณ„)."

"ํ•˜์ง€๋งŒ Java ๋จธ์‹ ์€ 1๋‹จ๊ณ„์™€ 3๋‹จ๊ณ„ ์‚ฌ์ด์— ์Šค๋ ˆ๋“œ ์ „ํ™˜์ด ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

"๊ทธ๋Ÿฌ๋ฉด ๋ณ€์ˆ˜๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ๋Š” 3๊ฐœ์˜ ์ž‘์—…์ž…๋‹ˆ๊นŒ?"

"์˜ˆ."

"๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— count++๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์„œ๋กœ ๊ฐ„์„ญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"

"์˜ˆ, ํ™•์ธํ•ด ๋ณด์„ธ์š”."

์Šค๋ ˆ๋“œ 1 ์Šค๋ ˆ๋“œ 2 ๊ฒฐ๊ณผ
register1 = count;
register1++;
count = register1;
register2 = count;
register2++;
count = register2;
register1 = count;
register2 = count;
register2++;
count = register2;
register1++;
count = register1;

"๊ทธ๋Ÿฌ๋ฉด ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ„ํ—˜ํ•ฉ๋‹ˆ๊นŒ?"

"์Œ, ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์‹ฌํ•˜์„ธ์š” โ˜บ"

"์–ด๋–ป๊ฒŒ?"

" ์‹ฑํฌ๋กœ๋‚˜์ด์ฆˆ๋“œ  ๋Š” ์šฐ๋ฆฌ์˜ ๊ฐ€์žฅ ์นœํ•œ ์นœ๊ตฌ์ž…๋‹ˆ๋‹ค."

"์•Œ๊ฒ ์–ด์š”."