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

๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (160)

Unfazedโ—๏ธ๐ŸŽฏ

[Java] Collection์˜ add ๋ฉ”์„œ๋“œ์˜ boolean ํƒ€์ž… ๋ฐ˜ํ™˜๊ณผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

Collection ์ธํ„ฐํŽ˜์ด์Šค์˜ add ๋ฉ”์„œ๋“œ๋Š” ์ปฌ๋ ‰์…˜์— ํŠน์ • ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค.์ฃผ์š” ํŠน์ง•๋ฐ˜ํ™˜ ๊ฐ’: ์ปฌ๋ ‰์…˜์ด ์ด ํ˜ธ์ถœ๋กœ ์ธํ•ด ๋ณ€๊ฒฝ๋˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.์ค‘๋ณต ์ฒ˜๋ฆฌ: ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜(์˜ˆ: Set)์—์„œ ์ด๋ฏธ ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.์ œ์•ฝ ์‚ฌํ•ญ: ์ปฌ๋ ‰์…˜์€ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ์— ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:null ์š”์†Œ ๊ฑฐ๋ถ€ํŠน์ • ํƒ€์ž…์˜ ์š”์†Œ๋งŒ ํ—ˆ์šฉ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ์ปฌ๋ ‰์…˜์ด ์ด๋ฏธ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‹ค๋ฅธ ์ด์œ ๋กœ ์š”์†Œ ์ถ”๊ฐ€๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒฝ์šฐ, false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผ ํ•œ๋‹ค.boolean ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ด์œ ์ปฌ๋ ‰์…˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€ ํ™•์ธ: ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋กœ ์ปฌ๋ ‰์…˜์ด ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ค€๋‹ค.์ค‘๋ณต ํ™•์ธ ๋ฉ”์ปค๋‹ˆ..

JDBC์™€ ์ตœ์‹  ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ (SQL Mapper, ORM)

JDBC๋Š” 1996๋…„ JDK 1.1์— ๊ณต์‹ ๋„์ž…๋œ Java์˜ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ API๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ๊ณผ ์ˆ˜๋™ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์ด ๋‚ฎ๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด SQL Mapper์™€ ORM ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๐Ÿ’ก ์™œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?๋ฒค๋” ์ค‘๋ฆฝ์„ฑ: ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ‘œ์ค€ JDBC ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉ → ์‹ค์ œ ๊ตฌํ˜„์€ ๊ฐ DB ๋ฒค๋”์˜ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋‹ด๋‹นํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ: OS/๋„คํŠธ์›Œํฌ ์ฐจ์ด๋ฅผ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ถ”์ƒํ™”๐Ÿ”„ ๋™์ž‘ ํ๋ฆ„์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ → DriverManager์— ์—ฐ๊ฒฐ ์š”์ฒญ๋“ฑ๋ก๋œ ๋“œ๋ผ์ด๋ฒ„๋“ค ์ค‘ JDBC URL ํŒจํ„ด ์ผ์น˜ํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„ ์„ ํƒํ•ด๋‹น ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ฌผ๋ฆฌ์  ์—ฐ..

Web (back-end)/DB 2025. 2. 20. 02:24
์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค๊ฐ€ Open ์ƒํƒœ์ผ ๋•Œ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€

1. HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„a) ์ •์ƒ ์ƒํƒœ(Closed)ํด๋ผ์ด์–ธํŠธ → ์ปจํŠธ๋กค๋Ÿฌ → ์„œ๋น„์Šค → ์™ธ๋ถ€ API ํ˜ธ์ถœ → ์‘๋‹ต ๋ฐ˜ํ™˜๋ชจ๋“  ์š”์ฒญ์ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ๋กœ์ง๊นŒ์ง€ ์ •์ƒ์ ์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.b) Open ์ƒํƒœ (Resilience4J)ํด๋ผ์ด์–ธํŠธ → ์ปจํŠธ๋กค๋Ÿฌ → ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค(Open) → Fallback ์‘๋‹ต ์ฆ‰์‹œ ๋ฐ˜ํ™˜ (์™ธ๋ถ€ API ํ˜ธ์ถœ ๋ฏธ๋ฐœ์ƒ)์š”์ฒญ์€ ์ปจํŠธ๋กค๋Ÿฌ ์—”๋“œํฌ์ธํŠธ์— ๋„๋‹ฌํ•˜์ง€๋งŒ, ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค๊ฐ€ ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‹คํ–‰์„ ์ฐจ๋‹จํ•œ๋‹ค.์™ธ๋ถ€ API ํ˜ธ์ถœ ์—†์ด Fallback ๋ฉ”์„œ๋“œ์—์„œ ์ง์ ‘ ์‘๋‹ต ์ƒ์„ฑ (์˜ˆ: 503 ์—๋Ÿฌ)2. ์ปจํŠธ๋กค๋Ÿฌ ๊ณ„์ธต ์˜ํ–ฅ ๋ถ„์„๊ตฌ๋ถ„์š”์ฒญ ๋„๋‹ฌ ์—ฌ๋ถ€์™ธ๋ถ€ API ํ˜ธ์ถœ ์—ฌ๋ถ€Closedโœ…โœ…Openโœ…โŒHalf-Openโœ…โš ๏ธ (์ œํ•œ์  ํ—ˆ์šฉ)์ปจํŠธ๋กค๋Ÿฌ ์ง„์ž… ๋กœ๊ทธ: ์š”์ฒญ์€ ํ•ญ์ƒ ๊ธฐ๋ก๋จ (HTTP ์š”..

Web (back-end)/HTTP 2025. 2. 19. 16:27
HTTP ์ฟ ํ‚ค์™€ ์„ธ์…˜ ์ถ”์ 

HTTP ์ฟ ํ‚ค(HTTP cookie) : ์›น ์„œ๋ฒ„์— ์˜ํ•ด ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜๋Š”, '์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ'.์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋– ํ•œ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์— ์„ค์น˜๋˜๋Š” ์ž‘์€ ๊ธฐ๋ก ์ •๋ณด ํŒŒ์ผ๋กœ ์ฟ ํ‚ค, ์›น ์ฟ ํ‚ค, ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค๋ผ๊ณ ๋„ ํ•œ๋‹ค.  ์ฟ ํ‚ค์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐœ์ƒ : ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„ ๊ด€๋ จ ์ •๋ณด๋ฅผ  ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ „์†กํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ฑ…์ž„์ด ์žˆ๊ณ , ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ 'ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํƒœ' ๋˜๋Š” 'HTTP ์ƒํƒœ ๊ด€๋ฆฌ ์ฒด๊ณ„(HTTP State Management Mechanism)๋ผ ํ•œ๋‹ค. ๊ณตํ†ต์ ์ธ ์ฟ ํ‚ค ์ €์žฅ ๋ฐฉ์‹๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ณด๊ด€ํ•˜๋Š”๋ฐ ๊ฐ ์ฟ ํ‚ค๋Š” ์ด๋ฆ„,..

Web (back-end)/HTTP 2025. 2. 18. 15:02
[Java] null ์ฐธ์กฐ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

Java์—์„œ null์€ ์ฐธ์กฐ ํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ ์•„๋ฌด ๊ฐ์ฒด๋„ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน์ˆ˜ํ•œ ๋ฆฌํ„ฐ๋Ÿด์ด๋‹ค. null์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋ชจ๋“  ์ฐธ์กฐ ํƒ€์ž…์— ํ• ๋‹น ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ฃผ์†Œ๊ฐ’์ด 0x0์œผ๋กœ ๊ณ ์ •๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ์ฐจ๋‹จ๋œ๋‹ค.null์˜ ๋ณธ์งˆ์  ํŠน์„ฑ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…: null์€ ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹Œ ๋ฆฌํ„ฐ๋Ÿด๋กœ ๋ถ„๋ฅ˜๋˜๋ฉฐ, instanceof ์—ฐ์‚ฐ์ž๋กœ ํ™•์ธ ์‹œ ํ•ญ์ƒ false ๋ฐ˜ํ™˜(null์€ Object๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ)ํƒ€์ž… ์‹œ์Šคํ…œ: ๋ชจ๋“  ์ฐธ์กฐ ํƒ€์ž…(ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐฐ์—ด)์— ํ• ๋‹น ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ธฐ๋ณธํ˜•(int ๋“ฑ)์—๋Š” ์ง์ ‘ ํ• ๋‹น ๋ถˆ๊ฐ€ํŠน์„ฑ์„ค๋ช…์ฃผ์†Œ๊ฐ’0x0์œผ๋กœ ๊ณ ์ •๋˜์–ด ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ฐจ๋‹จ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ๊ฐ์ฒด ํ—ค๋” ์—†์ด ๋‹จ์ˆœ 0๊ฐ’ ์ €์žฅํƒ€์ž… ์บ์ŠคํŒ…์–ด๋–ค ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ๋„ ์บ์ŠคํŒ… ๊ฐ€๋Šฅ์ดˆ๊ธฐํ™” ๊ธฐ๋ณธ๊ฐ’ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ null ์ดˆ๊ธฐํ™”null..

Java 2025. 2. 14. 11:12
[Java] ํŠธ๋ฆฌ, ์žฌ๊ท€ | LeetCode 226 Invert Binary Tree (๊ท€๋‚ฉ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ)

๋ฌธ์ œ ๋งํฌhttps://leetcode.com/problems/invert-binary-tree/description/?envType=study-plan-v2&envId=top-interview-150 ๋ฌธ์ œ ์ž…์ถœ๋ ฅ์ž…๋ ฅ: ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ(root) ๋…ธ๋“œ์ถœ๋ ฅ: ๊ฐ ๋…ธ๋“œ์˜ ์ž์‹ ์ขŒ์šฐ๋ฅผ ๋’ค๋ฐ”๊พผ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ชจ๋“  ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ์„œ๋กœ ๊ตํ™˜ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ž์‹๋“ค์„ swapํ•˜๋ฉด ๋˜๋Š”๋ฐ, ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ณผ์ •์—์„œ ์žฌ๊ท€์ ์œผ๋กœ ๊ณ„์† swapํ•ด์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•˜์ง€๋งŒ ์žฌ๊ท€ ํ˜ธ์ถœ ์ˆœ์„œ๋ฅผ ๊นŠ๊ฒŒ ์ƒ์ƒํ•˜๋ฉด์„œ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ฝ์งˆ์„ ํ•ด์„œ ๋А๋‚€ ๋ฐ”๋ฅผ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ์‹œ     4   /   \  2     7 / \     / \1   3 6   9 ์žฌ๊ท€ ํ˜ธ..

[Java] ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ JVM์˜ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์ดํ•ดํ•˜๋Š” ์Šค๋ ˆ๋“œ start(), run() ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด

Java์—์„œ start() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์™€ run() ๋ฉ”์„œ๋“œ ์ง์ ‘ ํ˜ธ์ถœ์˜ ๋ฌธ์ œ์ ์„ ์•Œ์•„๋ณด์ž. 1. ์Šค๋ ˆ๋“œ ์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํ•ต์‹ฌ ์ฐจ์ดstart() ๋ฉ”์„œ๋“œ์˜ ์—ญํ• ์ƒˆ๋กœ์šด ํ˜ธ์ถœ ์Šคํƒ(Call Stack)์„ ์ƒ์„ฑํ•˜์—ฌ JVM์ด ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ start0()๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉฐ, ์ด๋Š” OS ์ˆ˜์ค€์—์„œ ์‹ค์ œ ์Šค๋ ˆ๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. run() ์ง์ ‘ ํ˜ธ์ถœ์˜ ๋ฌธ์ œ์ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ์˜ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ๋™๊ธฐ์ ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ์ด๋Š” ๋‹จ์ˆœ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์˜ ํ•ต์‹ฌ์ธ ๋ณ‘๋ ฌ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.// ์ž˜๋ชป๋œ ์‚ฌ์šฉ ์˜ˆ์‹œThread myThread = new MyCustomThread();myThrea..

Java 2025. 2. 7. 15:29
[Java] ์Šค๋ ˆ๋“œ ์ข…๋ฃŒ & Daemon ์Šค๋ ˆ๋“œ

์Šค๋ ˆ๋“œ ์ค‘๋‹จ์˜ ํ•„์š”์„ฑ๊ณผ ์ƒํ™ฉ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์Šค๋ ˆ๋“œ๋Š” ์ž์›์„ ์†Œ๋น„ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์ด์ง€ ์•Š๋”๋ผ๋„ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ปค๋„ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ CPU ์‹œ๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ์ž์› ์†Œ๋น„๋Š” ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์‹คํ–‰๋˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ๋” ์ด์ƒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค. ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์Šค๋ ˆ๋“œ ์ค‘๋‹จ์ด ์š”๊ตฌ๋œ๋‹ค.๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ํšŒ์ˆ˜: ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„์—๋„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•„ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ„์† ์†Œ๋น„ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ์ข…๋ฃŒํ•จ์œผ๋กœ์จ ์ž์› ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.๋น„์ •์ƒ ๋™์ž‘ ๋Œ€์‘: ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘, ์˜ˆ์ƒ๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ์‘๋‹ต์ด ์—†๋Š” ๊ฒฝ์šฐ ์Šค๋ ˆ๋“œ๋ฅผ ์ค‘๋‹จํ•ด ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ ์‹œ ์ฒ˜๋ฆฌ: ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…..

Java 2025. 2. 6. 21:26
[Java] ์Šค๋ ˆ๋“œ ์ƒ์„ฑ (Runnable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„, Thread ํด๋ž˜์Šค ์ƒ์†)

Java์—์„œ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค.Runnable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ๋ฐฉ์‹๋ณ„๋„์˜ Runnable ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์ด๋ฅผ Thread ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.์ด์ „ ๊ฒŒ์‹œ๊ธ€์—์„œ ๋‹ค๋ฃฌ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ์™€ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ์ฝ”๋“œ์™€ ์Šค๋ ˆ๋”ฉ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šค๋ ˆ๋“œ๋กœ ์‹คํ–‰ํ•  ์ž‘์—…์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ณ , ๋™์ผํ•œ Runnable์„ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ์šฉ์ดํ•˜๋‹ค. ๋˜ํ•œ, ์ƒ์†์˜ ์ œ์•ฝ ์—†์ด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๋„ ํฐ ์ด์ ์ด๋‹ค. Thread ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋ฐฉ์‹Thread ํด๋ž˜์Šค ์ž์ฒด๊ฐ€ Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ์ƒ์†ํ•˜์—ฌ run()..

Java 2025. 2. 6. 13:32