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

๋ชฉ๋ก์Šค๋ ˆ๋“œ (3)

Unfazedโ—๏ธ๐ŸŽฏ

[Java] ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋Šฅ๊ณผ ๋””๋ฒ„๊น…

1. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์˜ ๊ฐœ๋…๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. Java์—์„œ๋Š” Thread ํด๋ž˜์Šค์™€ Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด CPU ์ž์›์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ฐ ์‘๋‹ต์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.2. ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ ์ƒ์„ฑํ•˜๊ธฐJava์—์„œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋จผ์ € Thread ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ƒ์„ฑ์ž์— Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ , Runnable ์ธํ„ฐํŽ˜์ด์Šค์˜ run() ๋ฉ”์„œ๋“œ์— ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•  ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.Thread thread = new Thread(new Runnable() { @Override public void run() { ..

Java 2025. 2. 6. 11:45
๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜, ์Šค์ผ€์ค„๋ง, ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ

1. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ฃผ์š” ์ด์œ ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ์‘๋‹ต์„ฑ(Responsiveness)๊ณผ ์„ฑ๋Šฅ(Performance)์ด๋‹ค.1.1. ์‘๋‹ต์„ฑ(Responsiveness)์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก๋ฉด์—์„œ ์‘๋‹ต์„ฑ์€ ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ด๋‹ค.์‚ฌ๋ก€ 1: ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์—์„œ ๋Œ€๋Ÿ‰ ๊ตฌ๋งค ์š”์ฒญ์ด DB ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ฌ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์ฐจ๋‹จ๋จ โ†’ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์œผ๋กœ ๊ฐ ์š”์ฒญ์„ ๋ณ„๋„ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋™์‹œ ์‘๋‹ต ๊ฐ€๋Šฅ์‚ฌ๋ก€ 2: ๋™์˜์ƒ ์žฌ์ƒ ์•ฑ๋ฉ”์ธ ์Šค๋ ˆ๋“œ: UI ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์›Œ์ปค ์Šค๋ ˆ๋“œ: ๋ฏธ๋””์–ด ๋””์ฝ”๋”ฉ ๋ฐ ์ถœ๋ ฅ โ†’ ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ž™์…˜ ์ง€์—ฐ ์—†๋Š” ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜ ์ œ๊ณต์ด๋Ÿฌํ•œ ๋™์‹œ์„ฑ(Concurrency)์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ฌ์ง€์–ด ๋‹จ์ผ ์ฝ”์–ด์—์„œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.1.2. ์„ฑ๋Šฅ(Performa..

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

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