๊ธฐ์ดˆ ํƒ„ํƒ„! ๋…ํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” Java Part 3(์ƒ) : ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ๋™๊ธฐํ™”

์ดˆ๋ณดํƒˆ์ถœ ๋น„๊ธฐ ๊ณต๊ฐœ! Java ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค!

(5.0) ์ˆ˜๊ฐ•ํ‰ 37๊ฐœ

์ˆ˜๊ฐ•์ƒ 754๋ช…

๋‚œ์ด๋„ ์ค‘๊ธ‰์ด์ƒ

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

5.0

5.0

๋ณ„๋‹ค๋ฐฉ

71% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

๊ธฐ๋‹ค๋ฆฌ๋˜ part3 ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋‹ค๋ฆฐ ๋ณด๋žŒ์ด ์žˆ๋„ค์š”. ์–‘์งˆ์˜ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ›„๋”ฑ ๋“ฃ๊ณ  part3-2ํŽธ ๊ธฐ๋Œ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

5.0

๊ฐ•์œค์ˆ˜

100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์ค‘๊ฐ„์ค‘๊ฐ„ ์•Œ๋ ค์ฃผ์‹œ๋Š” CS์ง€์‹๊ณผ ํ•ด๋‹น ์ง€์‹๊ณผ ์—ฐ๊ด€์ง€์–ด ์„ค๋ช…ํ•ด์ฃผ์‹œ๋Š”๊ฒŒ ์•„์ฃผ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

5.0

sunny75

100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

(25/08/01/๊ธˆ 21:27) ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ, ๋™๊ธฐํ™”์— ๋Œ€ํ•ด ๋งŽ์ด ์ƒ๊ฐ ํ–ˆ์Šต๋‹ˆ๋‹ค. Map ์ด ๋ญ”์ง€๋„ ์ดํ•ด ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„๋„๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ ค๊ณ , ํ‰์ผ์—๋„ ์„ธ์…˜ 1๊ฐœ์”ฉ ๋“ค์—ˆ ๋„ค์š”. ๋‚ด์ผ์€ ์ฃผ๋ง, ๋‚จ์€ ๊ฐ•์˜๋ฅผ ๋‹ค ๋“ค์„ ์˜ˆ์ • ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๋งŒ๋“ค์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Java๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•

  • Java ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ๊ณผ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ JVM ๊ตฌ์กฐ

  • ๊ณ ์„ฑ๋Šฅ Lock-free ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ „๊ณต์ž ์ˆ˜์ค€์˜ ๋†’์€ ์ดํ•ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์ž์˜ ๊ฒฝ์Ÿ๋ ฅ์€ ์˜ค์ง ์‹ค๋ ฅ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋กœ ํ™•์‹คํžˆ ์ฐจ๋ณ„ํ™”๋œ ๊ฒฝ์Ÿ๋ ฅ์„ ํ™•๋ณดํ•˜์„ธ์š”!

'Java ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ'๊นŒ์ง€
๊นŠ๊ฒŒ ๋‹ค๋ฃจ๋Š” ์ด์œ  ๐Ÿค”

์ด ๊ฐ•์˜๋ฅผ ์ œ๋Œ€๋กœ ๋๋‚ธ๋‹ค๋ฉด
์ „๊ณต์ž์— ๋น„๊ฒฌํ•  ์ˆ˜ ์žˆ๋Š” ๋†’์€ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ
Java๋ฅผ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋™๊ธฐํ™”

ํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ํ•˜๊ณ  ๋™์‹œ์— ์šด์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์›๋‹ˆ๋‹ค. synchronized ์˜ˆ์•ฝ์–ด๋ฅผ ์ด์šฉํ•œ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ JVM ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ๋”ฐ๋ฅธ ํŠน์„ฑ๊นŒ์ง€ ๊นŠ๊ฒŒ ์ œ๋Œ€๋กœ ๋ฐฐ์›๋‹ˆ๋‹ค.

JMM(*Java Memory Model)

Java ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ์€ Working ๋ฉ”๋ชจ๋ฆฌ์™€ Main ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋™๊ธฐํ™”์— ์‹คํŒจ ํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์›๋ฆฌ๋กœ ๋Œ€์‘ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ „๊ณต์ž ์ˆ˜์ค€์œผ๋กœ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CAS์™€ Lock-free

CPU ์ˆ˜์ค€์—์„œ ์ œ๊ณตํ•˜๋Š” CAS(Compare And Swap) ๋ช…๋ น์„ ํ™œ์šฉํ•ด ์Šค์œ„์นญ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๋Š” ๊ณ ์„ฑ๋Šฅ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค. ๋‚˜์•„๊ฐ€ Lock-free Queue ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ  ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๋„ค๋ฆญ๊ณผ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

ADT๋ฅผ ๋„˜์–ด ์ž๋ฃŒํ˜•์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ๊ทน๋‹จ์ ์œผ๋กœ ๋‚ฎ์ถ˜ ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด ๋ฐฐ์›๋‹ˆ๋‹ค. ์ด ์ œ๋„ค๋ฆญ์„ ์ด์šฉํ•ด ์žฌ์‚ฌ์šฉ์„ฑ์ด ๊ทน๋Œ€ํ™”๋œ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—๋„ ์ œ๋Œ€๋กœ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€ป์—ฌ๊ธฐ์„œ ์ž ๊น! JVM์ด๋ž€?
JVM(Java Virtual Machine)์€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐ€์ƒ์˜ ์ปดํ“จํ„ฐ์ž…๋‹ˆ๋‹ค.

ํ•™์Šต ๋Œ€์ƒ


์ฝ”๋“œ๋งŒ ์ง€๊ฒน๊ฒŒ ๋”ฐ๋ผ ์น˜๊ณ 
๋จธ๋ฆฌ ์†์— ๋‚จ๋Š” ๊ฒŒ ์—†๋‹ค๊ณ  ๋А๊ปด๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ์ž


๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ
์ทจ์—…ํ•˜๊ณ  ์‹ถ์€ ์ทจ์—… ์ค€๋น„์ƒ


๋งŽ์ด ์“ฐ๋Š” ์–ธ์–ด๋ผ๊ณ  ํ•ด์„œ
๋ฐฐ์› ์ง€๋งŒ ๋ณธ์งˆ์„ ์ž˜ ๋ชจ๋ฅด๋Š”
1~2๋…„์ฐจ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

ํ•™์Šต ๋กœ๋“œ๋งต ๐Ÿƒ๐Ÿป

๋…ํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” Java ์‹œ๋ฆฌ์ฆˆ๋Š” ์ด 4๊ฐœ Part ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
๋ณ„๋„ 1,2 ๊ฐ•์˜๋Š” Spring ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ๋“ค์œผ๋ฉด ์ข‹์€ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค ๐Ÿ™‚

  • Part 1 : ๊ธฐ์ดˆ์ ์ธ ๋ฌธ๋ฒ•, ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • Part 2 : ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ + ์ž๋ฃŒ๊ตฌ์กฐ

  • Part 3 : ์‹œ์Šคํ…œ ํ™œ์šฉ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ

  • Part 4 : Spring Framework์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•œ ์ค€๋น„

  • ๋ณ„๋„ 1 : ์›น ์ธํ”„๋ผ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ดํ•ด์™€ DB

  • ๋ณ„๋„ 2 : SQL ๊ณ ๊ธ‰


Part 3๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•, CAS(Compare And Swap, Set), Lock-free ๊ตฌ์กฐ, ํŒŒ์ผ ์ž…/์ถœ๋ ฅ, ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋“ฑ ๊ณ ๊ธ‰ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๋‚ด์šฉ๋“ค์ด ๋‹ค์ˆ˜ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๋งŽ์•„ ์ƒ, ํ•˜ํŽธ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์œผ๋ฉฐ ์ƒํŽธ์—์„œ๋Š” Java Memory Model๊ณผ JVM์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ๊นŠ์ด ์žˆ๊ฒŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”์— ๊ด€ํ•œ ๊ฐ์ข… ๋ฌธ๋ฒ•๋“ค์ด JVM ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ์›๋ฆฌ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒฝ์Ÿ ์กฐ๊ฑดํ•˜์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ข… ์ด์ƒํ˜„์ƒ์ด๋‚˜ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์‹คํ•œ ๊ธฐ๋ฐ˜์„ ๋‹ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‚˜๋ฉด...

  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จํ•ด JVM(Java Virtual Machine)๊ณผ JMM(Java Memory Model)์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋™๊ธฐํ™” ์‹คํŒจ์— ๋”ฐ๋ฅธ ๋ฌธ์ œ์— ์ง์ ‘ ๋Œ€์‘ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค๋ ฅ์„ ๊ฐ–์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • synchronized ์˜ˆ์•ฝ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ทผ๋ณธ์ ์ธ ์ž‘๋™์›๋ฆฌ๋ฅผ JVM๊ณผ ๋”๋ถˆ์–ด ์•Œ ์ˆ˜ ์žˆ๊ณ  Monitor lock์— ๋Œ€ํ•ด ๋‹จ์ˆœ ์šฉ์–ด๊ฐ€ ์•„๋‹Œ ์›๋ฆฌ ๊ด€์ ์—์„œ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณ ์„ฑ๋Šฅ ์ž…/์ถœ๋ ฅ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  CAS(Compare And Swap, Compare And Set)๋ฅผ ์ด์šฉํ•ด Spin lock์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ Lock-free ๊ธฐ๋ฐ˜ Queue๋ฅผ ์Šค์Šค๋กœ ๊ตฌํ˜„ํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ค‘ยท๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์œผ๋กœ CS ์ „๊ณต์ž์กฐ์ฐจ ์‰ฝ๊ฒŒ ๋‹ค๊ฐ€๊ฐ€์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค.

  • ์ œ๋„ค๋ฆญ ๋ฌธ๋ฒ•๊ณผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” Java๋Š”
๊ทธ๋ƒฅ Java ๊ฐ•์˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

1โƒฃ
๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์ด
ํ•„์š”ํ•œ ์ด์œ 


  • Thread ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋”๋ถˆ์–ด ์™œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒƒ์ธ์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • GUI๊ธฐ๋ฐ˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ฐ˜์  ๊ตฌ์กฐ์ธ Event-loop ๊ตฌ์กฐ์— ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ๋“ค์–ด ๊ด€๋ จ ์ด๋ก ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ์•„์šธ๋Ÿฌ ๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ์œ ๋ฐœํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„ ๋ด…๋‹ˆ๋‹ค.


2โƒฃ
๋™๊ธฐํ™”์— ๊ด€ํ•œ JVM
๋‚ด๋ถ€์™€ Lock flag


  • synchronized๋ฅผ ๋น„๋กฏํ•ด Lock ๊ธฐ๋ฐ˜ ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ JVM ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • OS์ˆ˜์ค€์—์„œ ์ œ๊ณตํ•˜๋Š” ์ปค๋„ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ์™€ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋“ฑ์„ ๊ตฌ๋ถ„ํ–ˆ์„ ๋•Œ ์–ด๋–ค ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3โƒฃ
Java Memory Model๋กœ
์ดํ•ดํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋™๊ธฐํ™” ์ด์Šˆ


  • JMM(Java Memory Model)์— ๋Œ€ํ•ด ์ดํ•ดํ•ดํ•˜๊ณ  ์–ด๋–ค ๋™์ž‘ ํŠน์ง•์ด ์žˆ๋Š”์ง€ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Working memory ์˜์—ญ๊ณผ JVM ์ „์ฒด์— ์ ์šฉ๋˜๋Š” Main memory ๊ฐ„ ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ค ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ฐ„ ๋™๊ธฐํ™”๊ฐ€ ์ผ์–ด๋Š” ๊ตฌ์ฒด์ ์ธ ์‹œ์ ๊ณผ ์ด์œ ๋ฅผ ์•Œ๊ณ  ์ ์ ˆํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4โƒฃ
์ •๋ฆฌ๋œ ๊ต์œก ์ž๋ฃŒ์™€ ํŒ์„œ ๐Ÿ“œ


  • ๋ชจ๋“  ์ˆ˜์—… ๋‚ด์šฉ์€ PPT์ž๋ฃŒ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€๋งŒ ๋งˆ์น˜ ํ™”์ดํŠธ๋ณด๋“œ์— ํŒ์„œ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์„ค๋ช…์ด ์ด์–ด์ง‘๋‹ˆ๋‹ค.

  • ์ด๋ฅผ ํ†ตํ•ด ์ˆ˜๊ฐ•์ž๋Š” ์™„์„ฑ๋œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ตฌ์กฐ๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ๊ณผ ์ด์œ  ์ „๋ฐ˜์— ๋Œ€ํ•œ ํ๋ฆ„์„ ์ข…ํ•ฉ์ ์œผ๋กœ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5โƒฃ
๋ชฉํ‘œ๋Š” ์ฐจ๋ณ„ํ™”๋œ ๊ฒฝ์Ÿ๋ ฅ๊ณผ ์ทจ์—… ๐Ÿ’ผ

  • ๋ณธ๊ฒฉ์ ์ธ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๊ธฐ์— ์•ž์„œ ๋ณธ ์ˆ˜์—…์ด ์ทจ์—…์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Œ์„ ๋ช…ํ™•ํžˆ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ 

    ๊ฐ•์‚ฌ์˜ ์˜ค๋žœ ๊ฐ•์˜ ๊ฒฝํ—˜์„ ๊ทผ๊ฑฐ๋กœ ๋ช…ํ™•ํ•œ ํ•™์Šต๋กœ๋“œ๋งต๊ณผ ์†Œ์š”์‹œ๊ฐ„์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

  • ์ž˜๋ชป๋œ ์„ ํƒ์œผ๋กœ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๋Š” ์ผ์ด ์—†๋„๋ก ์ฒ˜์Œ๋ถ€ํ„ฐ ์ ์ ˆํ•œ ํ•™์Šต ๋ฐฐ๋ถ„ ๋ฐ ์ผ์ •์„ ์ˆ˜๋ฆฝํ•˜๋„๋ก ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค.

6โƒฃ
๊ฐ์ข… ๊ธฐ๋ฒ•๋ณ„ ๊ตฌ์ฒด์ ์ธ
์„ฑ๋Šฅ๋น„๊ต๊ฒฐ๊ณผ ์ œ๊ณต


  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๋™๊ธฐํ™” ๋ฌธ์ œ์™€ ์Šค์œ„์นญ ์˜ค๋ฒ„ํ—ค๋“œ์— ๊ด€ํ•œ ๊นŠ์ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ๊ฐ์ข… ๋™๊ธฐํ™” ๊ธฐ๋ฒ•์„ ์ ์šฉํ–ˆ์„ ๋•Œ ์–ผ๋งˆ๋‚˜ ์„ฑ๋Šฅ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€ ๊ตฌ์ฒด์ ์ธ ์ˆ˜์น˜๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • ๊ณ ์„ฑ๋Šฅ Lock-free ๊ตฌ์กฐ๋ฅผ ์ ์šฉํ•˜๋”๋ผ๋„ ์˜คํžˆ๋ ค ํšจ์œจ์ด ๊ธ‰๊ฐํ•˜๋Š” ์ƒํ™ฉ์„ ์ง์ ‘ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7โƒฃ
Spin lock๊ณผ

Lock-free ๊ตฌ์กฐ ์ง์ ‘ ๊ตฌํ˜„ ๐Ÿ› 


  • ๊ณ ์„ฑ๋Šฅ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  CAS(Compare And Swap, Set) ๋ช…๋ น์„ ํ™œ์šฉํ•ด ์Šค์œ„์นญ ์—†์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋™๊ธฐํ™”๋Š” ๊ธฐ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • Lock-free Queue๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ƒํ™ฉ๋ณ€ํ™”๋ฅผ ์ ์šฉํ•ด ์–ด๋–ค ์„ฑ๋Šฅ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‹คํ—˜์„ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์Šต ํ™˜๊ฒฝ

  • ์šด์˜ ์ฒด์ œ ๋ฐ ๋ฒ„์ „(OS): Windows 11

  • ์‚ฌ์šฉ ๋„๊ตฌ: IntelliJ IDEA 2024.2.3 (Community Edition)

  • PC ์‚ฌ์–‘: Windows 11 OS ๋ฐ IntelliJ๊ฐ€ ๋ฌด๋ฆฌ ์—†์ด ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€

ํ•™์Šต ์ž๋ฃŒ

  • ์ˆ˜์—…์— ์‚ฌ์šฉ๋œ PPT์ž๋ฃŒ (PDFํŒŒ์ผ๋กœ ์ œ๊ณต)

  • ์ „์ฒด ์˜ˆ์ œ ๋ฐ ํ•„์ˆ˜์‹ค์Šต ๋ฌธ์ œ ์ •๋‹ต(Zip ์••์ถ• ํŒŒ์ผ๋กœ ์ œ๊ณต)

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • '๊ธฐ์ดˆํƒ„ํƒ„' ๋…ํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” Java Part 1~2
    (โ€ป ๊ธฐ์ดˆ์ ์ธ ๋ฌธ๋ฒ•์ด๋‚˜ OOP์— ๋Œ€ํ•ด ๋ชจ๋‘ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•จ)


์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ์ทจ์—…์‹œ์žฅ์—์„œ ์ฐจ๋ณ„ํ™”๋œ ๊ฒฝ์Ÿ๋ ฅ์„ ์–ป๊ณ  ์‹ถ์€ ์ดˆ๊ธ‰ Java ๊ฐœ๋ฐœ์ž

  • JVM ๋‚ด๋ถ€๊ตฌ์กฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊นŠ๊ฒŒ Java๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ถ„

  • Java ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ์™€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ๊นŠ์€ ์ดํ•ด๋ฅผ ์–ป๊ณ  ์‹ถ์€ ๋ถ„

  • ์ค‘๊ณ ๊ธ‰ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ๋…ํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” Java Part 2 ์ˆ˜์ค€์˜ JVM ๋‚ด๋ถ€๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด

  • Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์•ˆ๋…•ํ•˜์„ธ์š”
๋„๋„ํ•œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

48,755

๋ช…

์ˆ˜๊ฐ•์ƒ

2,842

๊ฐœ

์ˆ˜๊ฐ•ํ‰

1,180

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

27

๊ฐœ

๊ฐ•์˜

๋„๋„ํ•œ ๊ฐœ๋ฐœ์ž TV ์ฑ„๋„ ์ฃผ์ธ์žฅ์ด์ž
30๋…„ ๋„˜๊ฒŒ IT๊ธฐ์ˆ ์˜ ๋ฐ”๋‹ค๋ฅผ ํ•ญํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ์ž…๋‹ˆ๋‹ค.  ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. ^^  

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

51๊ฐœ โˆ™ (10์‹œ๊ฐ„ 11๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

37๊ฐœ

5.0

37๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • ๊ฐ•์œค์ˆ˜๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๊ฐ•์œค์ˆ˜

    ์ˆ˜๊ฐ•ํ‰ 12

    โˆ™

    ํ‰๊ท  ํ‰์  4.9

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ค‘๊ฐ„์ค‘๊ฐ„ ์•Œ๋ ค์ฃผ์‹œ๋Š” CS์ง€์‹๊ณผ ํ•ด๋‹น ์ง€์‹๊ณผ ์—ฐ๊ด€์ง€์–ด ์„ค๋ช…ํ•ด์ฃผ์‹œ๋Š”๊ฒŒ ์•„์ฃผ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

  • ichroh๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ichroh

    ์ˆ˜๊ฐ•ํ‰ 27

    โˆ™

    ํ‰๊ท  ํ‰์  4.5

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

  • ๋ณ„๋‹ค๋ฐฉ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๋ณ„๋‹ค๋ฐฉ

    ์ˆ˜๊ฐ•ํ‰ 13

    โˆ™

    ํ‰๊ท  ํ‰์  4.5

    5

    71% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๊ธฐ๋‹ค๋ฆฌ๋˜ part3 ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋‹ค๋ฆฐ ๋ณด๋žŒ์ด ์žˆ๋„ค์š”. ์–‘์งˆ์˜ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ›„๋”ฑ ๋“ฃ๊ณ  part3-2ํŽธ ๊ธฐ๋Œ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

    • ๋„๋„ํ•œ ๊ฐœ๋ฐœ์ž
      ์ง€์‹๊ณต์œ ์ž

      ์ข‹์€ ํ‰๊ฐ€์™€ ํ”ผ๋“œ๋ฐฑ ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค. ์–ผ๋ฅธ ํ•˜ํŽธ ์ค€๋น„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

  • ์ด์„ฑํ˜๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ์ด์„ฑํ˜

    ์ˆ˜๊ฐ•ํ‰ 8

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

  • wkdtl345๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    wkdtl345

    ์ˆ˜๊ฐ•ํ‰ 8

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

๋„๋„ํ•œ ๊ฐœ๋ฐœ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

๋น„์Šทํ•œ ๊ฐ•์˜

๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

โ‚ฉ77,000