Java 8. Interface

2026. 2. 10. 16:44ยท๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿ’พBack-end๐Ÿ•Š๏ธ

 

์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„์ฝ”๋“œ๋‚˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์ธํ„ฐํŽ˜์ด์Šค์— ์ด๋ฆ„์ด ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์„ ์–ธ๋˜์—ˆ๋‹ค๊ณ  ํ•ด๋„ ๊ตฌํ˜„์€ ํด๋ž˜์Šค์—์„œ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ, ์–ด๋–ค ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•˜๋Š”์ง€ ๋ชจํ˜ธํ•˜์ง€ ์•Š๋‹ค. 

 

๋‘ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ Customerํด๋ž˜์Šค๋Š” Buyํ˜• ์ด๊ธฐ๋„ํ•˜๊ณ , Sellํ˜•์ด๊ธฐ๋„ ํ•˜๋‹ค. 

์ธํ„ฐํŽ˜์ด์Šค ํ˜•๋ณ€ํ™˜

“Buyํ˜•์ด์ž Sellํ˜•์ด๋‹ค” = Customer๋Š” ๋‘ ์—ญํ• ์„ ๋‹ค ๊ฐ€์ง„๋‹ค

Customer ๊ฐ์ฒด๋Š” ์ด๋Ÿฐ ๋А๋‚Œ์ด์•ผ:

  • **ํ•œ ์‚ฌ๋žŒ(๊ฐ์ฒด)**์ด
  • “๊ตฌ๋งค์ž ์—ญํ• (Buy)”๋„ ํ•  ์ˆ˜ ์žˆ๊ณ 
  • “ํŒ๋งค์ž ์—ญํ• (Sell)”๋„ ํ•  ์ˆ˜ ์žˆ์Œ

๊ทธ๋ž˜์„œ ์•„๋ž˜๊ฐ€ ๊ฐ€๋Šฅํ•ด:

์™œ Buy buyer = customer; ํ•˜๋ฉด buy๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•ด?

์—ฌ๊ธฐ๊ฐ€ ํ™”๋ฉด์˜ ํ•ต์‹ฌ ๋ฌธ์žฅ์ด์•ผ:

“customer๋ฅผ Buy ์ธํ„ฐํŽ˜์ด์Šค ํ˜• ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๋ฉด
ํ˜•๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜ Buy ์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธํ•œ ๋ฉ”์†Œ๋“œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.”

์ฆ‰, ๊ฐ์ฒด๋Š” ๊ทธ๋Œ€๋กœ Customer์ธ๋ฐ,
๋ณ€์ˆ˜ ํƒ€์ž…์„ Buy๋กœ ์žก๋Š” ์ˆœ๊ฐ„ “Buy ๊ด€์ ์œผ๋กœ๋งŒ” ๋ณด๊ฒŒ ๋ผ์„œ,

โœ… ์ค‘์š”ํ•œ ํฌ์ธํŠธ:

  • “์‹คํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ”๋Š” ์‹ค์ œ ๊ฐ์ฒด(Customer)๊ฐ€ ๊ฐ€์ง„ ๊ตฌํ˜„์ด ์‹คํ–‰๋ผ. (๋™์  ๋ฐ”์ธ๋”ฉ)
  • ํ•˜์ง€๋งŒ “์ฝ”๋“œ์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก”์€ **์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…(Buy/Sell)**์ด ๊ฒฐ์ •ํ•ด.

 

 

[Java] ์ธํ„ฐํŽ˜์ด์Šค(Interface) — ๊ทœ์•ฝ/๋‹คํ˜•์„ฑ/default·static/๋‹ค์ค‘๊ตฌํ˜„ + ์‹ค์Šต(Scheduler, Sort)

์˜ค๋Š˜ ๋ฒ”์œ„ ํ•ต์‹ฌ์€ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋๋‚˜์š”.
“์ธํ„ฐํŽ˜์ด์Šค๋Š” ‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ(๋ฉ”์†Œ๋“œ)’์˜ ๊ทœ์•ฝ์ด๊ณ , ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๊ฐ™์€ ํƒ€์ž…์œผ๋กœ ํ†ต์ผํ•ด์„œ(๋‹คํ˜•์„ฑ) ์ฝ”๋“œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.”


๋ชฉ์ฐจ

  1. ์ธํ„ฐํŽ˜์ด์Šค๋ž€?
  2. implements๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ (MemberService ์˜ˆ์‹œ)
  3. ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ์“ฐ๋Š” ์ด์œ  = ๋‹คํ˜•์„ฑ
  4. ์ธํ„ฐํŽ˜์ด์Šค ๋ฉค๋ฒ„ ํŠน์ง•(๋ณ€์ˆ˜/๋ฉ”์†Œ๋“œ)
  5. Calc ์˜ˆ์ œ๋กœ ๋ณด๋Š” ๊ตฌ์กฐ(์ธํ„ฐํŽ˜์ด์Šค + ์ถ”์ƒํด๋ž˜์Šค + ๊ตฌํ˜„ํด๋ž˜์Šค)
  6. ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ(default)
  7. ์ •์  ๋ฉ”์†Œ๋“œ(static)
  8. ์ธํ„ฐํŽ˜์ด์Šค ๋‹ค์ค‘ ๊ตฌํ˜„ + ํ˜•๋ณ€ํ™˜(์—…์บ์ŠคํŒ…) ์ œํ•œ (Buy/Sell ์˜ˆ์‹œ)
  9. ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์† = ํ˜• ์ƒ์†(type inheritance)
  10. ์‹ค์Šต 1) ๊ณ ๊ฐ์„ผํ„ฐ ์ƒ๋‹ด ๋ฐฐ๋ถ„ ์ •์ฑ… (Scheduler)
  11. ์‹ค์Šต 1-์ถ”๊ฐ€ ๊ณผ์ œ) AgentGetCall ์ •์ฑ… ์ถ”๊ฐ€
  12. ์‹ค์Šต 2) Sort ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ ํ”„๋กœ๊ทธ๋žจ (๋„ˆ ์ฝ”๋“œ ํ•ด์„ค ํฌํ•จ)
  13. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ

1) ์ธํ„ฐํŽ˜์ด์Šค๋ž€?

  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” **ํด๋ž˜์Šค์˜ ๊ทœ์•ฝ(์•ฝ์†)**์ด์—์š”.
  • “์ด ๊ธฐ๋Šฅ๋“ค์€ ๋ฐ˜๋“œ์‹œ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค”๋ฅผ ๋ฉ”์†Œ๋“œ๋กœ ์ œํ•œํ•ด์„œ,
    ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ๋‹ค์–‘ํ•ด์ ธ๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

2) implements๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ (MemberService ์˜ˆ์‹œ)

(1) ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ

์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์†Œ๋“œ “ํ‹€”์„ ๋งŒ๋“ค๊ณ :

 
 

(2) ๊ตฌํ˜„ ํด๋ž˜์Šค์—์„œ implements

๊ตฌํ˜„ ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธ๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


3) ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ์“ฐ๋Š” ์ด์œ  = ๋‹คํ˜•์„ฑ(Polymorphism)

๊ตฌํ˜„์ด ๋๋‚œ ๋’ค์—๋Š” ๋ณดํ†ต ์ด๋ ‡๊ฒŒ ์”๋‹ˆ๋‹ค:

 

๊ทธ๋ฆฌ๊ณ  MemberServiceImpl2, MemberServiceImpl3์ฒ˜๋Ÿผ ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋” ์ƒ๊ฒจ๋„:

 

โœ… ํ•ต์‹ฌ ์žฅ์ 

  • ์ฝ”๋“œ๊ฐ€ **MemberService(๊ทœ์•ฝ)**๋งŒ ๋ฐ”๋ผ๋ณด๋‹ˆ๊นŒ
  • ๊ตฌํ˜„์ฒด๊ฐ€ ๋ฐ”๋€Œ์–ด๋„(Impl ๊ต์ฒด) ํ˜ธ์ถœ ์ฝ”๋“œ๋Š” ๊ฑฐ์˜ ์•ˆ ๋ฐ”๋€œ
  • ์ด๊ฒŒ “์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ์ฒ˜๋ฆฌ”ํ•˜๋Š” ๋‹คํ˜•์„ฑ์ด์—์š”.

4) ์ธํ„ฐํŽ˜์ด์Šค ๋ฉค๋ฒ„ ํŠน์ง•(๋ณ€์ˆ˜/๋ฉ”์†Œ๋“œ)

(1) ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ณ€์ˆ˜ = ์ž๋™์œผ๋กœ ์ƒ์ˆ˜

์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒ์ˆ˜๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์„ฑ๊ฒฉ์ด public static final์— ๊ฐ€๊นŒ์›Œ์š”.

(2) ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ = ์ž๋™์œผ๋กœ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ

์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธํ•œ ๋ฉ”์†Œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌํ˜„ ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.
public abstract๋ฅผ ์•ˆ ์จ๋„ ๊ทธ๋ ‡๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.


5) Calc ์˜ˆ์ œ๋กœ ๋ณด๋Š” ๊ตฌ์กฐ(์ธํ„ฐํŽ˜์ด์Šค + ์ถ”์ƒํด๋ž˜์Šค + ๊ตฌํ˜„ํด๋ž˜์Šค)

์ด ํŒŒํŠธ๊ฐ€ “์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„” ๊ฐ๊ฐ์„ ์žก๊ธฐ์— ์ข‹์•„์š”.

(1) Calc ์ธํ„ฐํŽ˜์ด์Šค: ๊ทœ์•ฝ(์ƒ์ˆ˜ + ์ถ”์ƒ๋ฉ”์†Œ๋“œ)

 

(2) Calculator ์ถ”์ƒ ํด๋ž˜์Šค: ์ผ๋ถ€๋งŒ ๊ตฌํ˜„ํ•˜๊ณ  ๋‚จ๊ฒจ๋‘๊ธฐ

 

โœ… ํฌ์ธํŠธ

  • Calculator๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋ผ์„œ new ๋ถˆ๊ฐ€๋Šฅ
  • Calc๋„ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋งŒ ์žˆ์œผ๋ฉด ์ง์ ‘ new ๋ถˆ๊ฐ€๋Šฅ
  • “์™„์„ฑ๋œ ๊ตฌํ˜„ ํด๋ž˜์Šค”๋งŒ new ๊ฐ€๋Šฅ

(3) CompleteCalc ๊ตฌํ˜„ ํด๋ž˜์Šค: ์ตœ์ข… ์™„์„ฑ(์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๊ฐ€๋Šฅ)

 
 


6) ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ(default)

(1) ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ๋ž€?

  • ์ธํ„ฐํŽ˜์ด์Šค์ธ๋ฐ๋„ ๊ตฌํ˜„ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฉ”์†Œ๋“œ
  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

์˜ˆ์‹œ(์ธํ„ฐํŽ˜์ด์Šค ์•ˆ์— ๊ธฐ๋ณธ ๋™์ž‘ ์ œ๊ณต):

 
public interface Calc { // ... (์ƒ์ˆ˜/์ถ”์ƒ๋ฉ”์†Œ๋“œ) default void description() { System.out.println("์ •์ˆ˜ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค"); } }

(2) ์™œ ํ•„์š”ํ•ด?

  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๊ฐ€ ์ด๋ฏธ ๋งŽ์„ ๋•Œ,
  • ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ตฌํ˜„ ํด๋ž˜์Šค๋“ค์„ ์ „๋ถ€ ์ˆ˜์ •ํ•˜๊ธฐ ์‹ซ์œผ๋ฉด
    → default๋กœ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด์š”.

7) ์ •์  ๋ฉ”์†Œ๋“œ(static) — ์ธํ„ฐํŽ˜์ด์Šค ์œ ํ‹ธ ๊ธฐ๋Šฅ

์ธํ„ฐํŽ˜์ด์Šค์—๋„ static ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ด๊ฑด ๋ณดํ†ต “๋„์›€ ํ•จ์ˆ˜(์œ ํ‹ธ)”๋กœ ์”๋‹ˆ๋‹ค.

์˜ˆ: ๋ฐฐ์—ด ํ•ฉ ๊ตฌํ•˜๋Š” total() ๊ฐ™์€ ๊ฒƒ.

public interface Calc { static int total(int[] arr) { int sum = 0; for (int x : arr) sum += x; return sum; } }

ํ˜ธ์ถœ์€ ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„์œผ๋กœ ์ง์ ‘:

 
int[] arr = {1,2,3,4,5}; System.out.println(Calc.total(arr));

8) ์ธํ„ฐํŽ˜์ด์Šค ๋‹ค์ค‘ ๊ตฌํ˜„ + ํ˜•๋ณ€ํ™˜(์—…์บ์ŠคํŒ…) ์ œํ•œ (Buy/Sell ์˜ˆ์‹œ)

(1) ์™œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ?

  • “ํด๋ž˜์Šค ๋‹ค์ค‘ ์ƒ์†”์€ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์ด ๋ชจํ˜ธํ•ด์งˆ ์ˆ˜ ์žˆ์–ด์„œ ์ œํ•œ์ด ๋งŽ์ง€๋งŒ,
  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ณดํ†ต ๊ตฌํ˜„ ์ฝ”๋“œ/๋ฉค๋ฒ„๋ณ€์ˆ˜๊ฐ€ ์—†์–ด์„œ
    ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ๊ตฌํ˜„ํ•ด๋„ ์ถฉ๋Œ์ด ๋œํ•ฉ๋‹ˆ๋‹ค.

(2) Buy, Sell์„ ๋™์‹œ์— ๊ตฌํ˜„ํ•œ Customer

 
public interface Buy { void buy(); } public interface Sell { void sell(); } public class Customer implements Buy, Sell { public void buy() { System.out.println("๊ตฌ๋งคํ•˜๊ธฐ"); } public void sell() { System.out.println("ํŒ๋งคํ•˜๊ธฐ"); } }

(3) “Customer๋Š” Buyํ˜•์ด์ž Sellํ˜•”

์ด๊ฒŒ ์ง„์งœ ํ•ต์‹ฌ์ด์—์š”:

Customer customer = new Customer(); Buy buyer = customer; // Buy ๊ด€์ ์œผ๋กœ ๋ด„(์—…์บ์ŠคํŒ…) buyer.buy(); // OK // buyer.sell(); // ์ปดํŒŒ์ผ ์—๋Ÿฌ (Buy ํƒ€์ž…์—๋Š” sell์ด ์—†์Œ) Sell seller = customer; // Sell ๊ด€์ ์œผ๋กœ ๋ด„(์—…์บ์ŠคํŒ…) seller.sell(); // OK // seller.buy(); // ์ปดํŒŒ์ผ ์—๋Ÿฌ

โœ… ์ •๋ฆฌ

  • ๊ฐ์ฒด๋Š” ๊ทธ๋Œ€๋กœ Customer์ธ๋ฐ
  • ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์ด Buy๋ƒ Sell์ด๋ƒ์— ๋”ฐ๋ผ “ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก”์ด ๋‹ฌ๋ผ์ง
  • ์ด๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ์„ค๊ณ„์˜ “์•ˆ์ „ํ•œ ์ œํ•œ”์ด์—์š”.

9) ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์† = ํ˜• ์ƒ์†(type inheritance)

  • ์ธํ„ฐํŽ˜์ด์Šค๋ผ๋ฆฌ๋„ ์ƒ์†(extends)์ด ๊ฐ€๋Šฅํ•ด์š”.
  • ๋‹ค๋งŒ ํด๋ž˜์Šค ์ƒ์†์ฒ˜๋Ÿผ “๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ๋ฌผ๋ ค๋ฐ›๋Š” ์ƒ์†”์ด ์•„๋‹ˆ๋ผ
    ํƒ€์ž…(๊ทœ์•ฝ)์„ ๋ฌผ๋ ค๋ฐ›๋Š” ์ƒ์†์ด๋ผ์„œ **ํ˜• ์ƒ์†(type inheritance)**๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค๋Š” ์ƒ์†์„ 1๊ฐœ๋งŒ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ ๋™์‹œ ์ƒ์†๋„ ๊ฐ€๋Šฅํ•ด์š”.

10) ์‹ค์Šต 1) ๊ณ ๊ฐ์„ผํ„ฐ ์ƒ๋‹ด ๋ฐฐ๋ถ„ ์ •์ฑ… (Scheduler)

์ƒํ™ฉ

  • ๊ณ ๊ฐ์„ผํ„ฐ๋กœ ์ „ํ™”๊ฐ€ ์˜ค๋ฉด ๋Œ€๊ธฐ์—ด์— ์ €์žฅ๋˜๊ณ ,
  • ์ƒ๋‹ด์›์—๊ฒŒ ๋ฐฐ๋ถ„ํ•˜๋Š” “์ •์ฑ…”์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ผ ์ˆ˜ ์žˆ๋‹ค.

์ •์ฑ… ์˜ˆ์‹œ 3๊ฐ€์ง€:

  1. ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ๋ถ„(๋ชจ๋“  ์ƒ๋‹ด์›์ด ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌ)
  2. ๊ฐ€์žฅ ์งง์€ ๋Œ€๊ธฐ์—ด/์‰ฌ๋Š” ์ƒ๋‹ด์›์—๊ฒŒ ๋ฐฐ๋ถ„
  3. ๊ณ ๊ฐ ๋“ฑ๊ธ‰(์šฐ์„ ์ˆœ์œ„) ๊ธฐ๋ฐ˜ ๋ฐฐ๋ถ„

Scheduler ์ธํ„ฐํŽ˜์ด์Šค

 
public interface Scheduler { void getNextCall(); void sendCallToAgent(); }

๊ตฌํ˜„์ฒด ์˜ˆ์‹œ (RoundRobin / LeastJob / PriorityAllocation)

๊ฐ ํด๋ž˜์Šค๋Š” ์ •์ฑ…์— ๋งž๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ(SchedulerTest)

์‹คํ–‰ ์‹œ ์ž…๋ ฅ:

  • R → RoundRobin
  • L → LeastJob
  • P → PriorityAllocation
    ์„ ํƒ๋œ ๊ตฌํ˜„์ฒด๋กœ ์•„๋ž˜ ๋‘ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ:
 
scheduler.getNextCall(); scheduler.sendCallToAgent();

โœ… ์—ฌ๊ธฐ์„œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ง›

  • Scheduler scheduler ํ•˜๋‚˜๋กœ ํ†ต์ผํ•ด๋‘๊ณ 
  • ์ž…๋ ฅ์— ๋”ฐ๋ผ ๊ตฌํ˜„์ฒด๋งŒ ๊ฐˆ์•„๋ผ์šฐ๋Š” ๊ตฌ์กฐ → ์ •์ฑ… ์ถ”๊ฐ€/๋ณ€๊ฒฝ์ด ์‰ฌ์›€

11) ์‹ค์Šต 1-์ถ”๊ฐ€ ๊ณผ์ œ) AgentGetCall ์ •์ฑ… ์ถ”๊ฐ€

์ฑ…์—์„œ ์ถ”๊ฐ€๋กœ ์š”๊ตฌํ•˜๋Š” ๊ณผ์ œ๋Š” ์ด๊ฑฐ์˜ˆ์š”:

  • “์ „ํ™”๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹”์ด ์•„๋‹ˆ๋ผ
    ์ƒ๋‹ด์›์ด ํ•„์š”ํ•  ๋•Œ ์Šค์Šค๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์š”๊ตฌ ์ถœ๋ ฅ:

  • getNextCall() ํ˜ธ์ถœ → “์ƒ๋‹ด์›์ด ๋‹ค์Œ ์ „ํ™” ์š”์ฒญ”
  • sendCallToAgent() ํ˜ธ์ถœ → “์ƒ๋‹ด์›์ด ์ „ํ™” ์ƒ๋‹ด์„ ๊ฐ€์ ธ๊ฐ”์Šต๋‹ˆ๋‹ค”
  • SchedulerTest์—์„œ A ๋˜๋Š” a ์ž…๋ ฅํ•˜๋ฉด ์„ ํƒ๋˜๋„๋ก

์ฆ‰, AgentGetCall๋„ Scheduler๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.


12) ์‹ค์Šต 2) Sort ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ ํ”„๋กœ๊ทธ๋žจ (๋„ˆ ์ฝ”๋“œ ํ•ด์„ค)

์ฑ… ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ:

  • Sort ์ธํ„ฐํŽ˜์ด์Šค์—๋Š”
    • ascending(int[] arr) (์˜ค๋ฆ„์ฐจ์ˆœ)
    • descending(int[] arr) (๋‚ด๋ฆผ์ฐจ์ˆœ)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…์€ description() ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ๋กœ ์ œ๊ณต
  • ๊ตฌํ˜„ ํด๋ž˜์Šค 3๊ฐœ: QuickSort, HeapSort, BubbleSort
  • ์‹ค์ œ ์ •๋ ฌ์€ ํ•˜์ง€ ์•Š๊ณ  ์„ค๋ช…๋งŒ ์ถœ๋ ฅํ•ด๋„ ๋จ
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ:
    • H → HeapSort
    • Q → QuickSort
    • B → BubbleSort

13) ๋„ค ์ฝ”๋“œ๊ฐ€ ์™œ “์ธํ„ฐํŽ˜์ด์Šค ๊ต๊ณผ์„œ ๊ตฌ์กฐ”์ธ์ง€

๋„ค๊ฐ€ ์˜ฌ๋ฆฐ ์ฝ”๋“œ ํ•ต์‹ฌ์€ ๋”ฑ ์ด ๊ตฌ์กฐ์˜ˆ์š”:

 

1. ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ํ†ต์ผ

 
2. ์ž…๋ ฅ์— ๋”ฐ๋ผ ๊ตฌํ˜„์ฒด ์„ ํƒ
 

3. ๊ทธ ์ดํ›„๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ ๋ญ๋“  ๋™์ผ ํ˜ธ์ถœ

 

โœ… ์ด๊ฒŒ ๋ฐ”๋กœ ๋‹คํ˜•์„ฑ์˜ ํ•ต์‹ฌ

  • “๋ฌด์Šจ ์ •๋ ฌ์ด๋ƒ”๋Š” ๋ฐ”๊นฅ์—์„œ ์„ ํƒํ•˜๊ณ 
  • “์ •๋ ฌ ์ˆ˜ํ–‰”์€ Sort ๊ทœ์•ฝ๋Œ€๋กœ๋งŒ ํ˜ธ์ถœํ•œ๋‹ค
    → ๊ตฌํ˜„์ฒด๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ํ˜ธ์ถœ๋ถ€๋Š” ๊ทธ๋Œ€๋กœ

'๐Ÿ‘ฉโ€๐Ÿ’ปDeveloper ๐Ÿ’ก > ๐Ÿ’พBack-end๐Ÿ•Š๏ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JAVA ์ปฌ๋ ‰์…˜ ์ž๋ฃŒ๊ตฌ์กฐ  (0) 2026.02.11
Java ์˜ˆ์™ธ ์ฒ˜๋ฆฌ  (0) 2026.02.11
JAVA : ์ƒ์†  (0) 2026.02.10
Java ์ƒ์†:๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ  (0) 2026.02.09
JAVA : ์ƒ์†  (2) 2026.02.09
'๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿ’พBack-end๐Ÿ•Š๏ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • JAVA ์ปฌ๋ ‰์…˜ ์ž๋ฃŒ๊ตฌ์กฐ
  • Java ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  • JAVA : ์ƒ์†
  • Java ์ƒ์†:๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
Quantitative Research Engineer & Quantitative Strategist | Multimodal Alpha (Price/News/On-chain) | Regime-aware, Cost-included Backtests | Remote-first ์—ฐ๋ฆฌ์˜ ๋‚œ ๋จธ๋‹ˆ๐Ÿ’ฐ๊ฐ€ ์ข‹์•„๐Ÿ’™๐Ÿฅณ ์ถฉ๋งŒํ•˜๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์ฆ๊ฒ๊ฒŒ ๐Ÿถ ๐Ÿฆซ ๐Ÿ’›
  • Eliana Lee
    Product & AI Engineer
    AboutMe ๋ชฉํ‘œ GitHub _yeonlee___ Eliana_Eden
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿค ๐Ÿ˜Ž ์•ˆ๋…•โ˜ƒ๏ธ๐Ÿ’ž (125)
      • ๐Ÿ’™ ๐Ÿค Diary๐Ÿฐ ๐ŸŽ€ ๐Ÿงธ (37)
        • ๐Ÿ—ฝ๋ฏธ๊ตญ DS & CS ๋ฐ•์‚ฌ ์ด๋ฏผ๐Ÿ‹ (26)
        • ๐Ÿ›ซ์—ฌํ–‰ ์ด์•ผ๊ธฐ (1)
        • ๐Ÿ“’์˜ค๋Š˜ ์ด์•ผ๊ธฐ๐Ÿ’’๐Ÿซง๐ŸŒค๏ธ (6)
        • ๐Ÿฐโ˜˜๏ธ๐Ÿป‍โ„๏ธ๊ฐ•์•„์ง€ ์œก์•„ (0)
      • ๐ŸฌActuary๐Ÿคธ‍โ™€๏ธโœจ (1)
      • ๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก (65)
        • โš’๏ธ์‚ฝ์งˆ ๊ธฐ๋ก๊ธฐ๐Ÿ“[TIL] (6)
        • ๐Ÿ–ผ๏ธFront-end๐ŸŽจ (3)
        • ๐Ÿ’พBack-end๐Ÿ•Š๏ธ (29)
        • ๐Ÿคน‍โ™€๏ธAlgorithm & Coding Test๐Ÿ’ƒ (9)
        • ๐Ÿ—ปData๐Ÿ”๏ธ (1)
        • ๐Ÿ“Project๐Ÿ• (9)
      • ๐Ÿ’ฐ๊ฒฝ์ œ์  ์ž์œ  ๋‹ฌ์„ฑโœŒ๏ธ๐ŸคŸ (9)
        • ๐Ÿ“ŠQuant๐Ÿ“ˆ๐Ÿ‘ (5)
        • ๐Ÿฐ๐Ÿ›’๐Ÿฅ‡ (1)
        • ๐Ÿ’Ž ํˆฌ์ž ์‹ค์ „ ๊ฒฝํ—˜ โ˜บ๏ธ (1)
        • ๐Ÿ… Bitcoin 15๊ฐœ ๋ชจ์œผ๊ธฐ : 2040๋…„ 200์–ต+ (0)
        • ๐ŸŒŽ๋ฏธ๊ตญ ์‹œ์žฅ๐Ÿฆ (0)
      • ๐ŸŒค๏ธCloud๐ŸŒค๏ธโ˜๏ธ (2)
        • AWS (1)
        • Kubernetes (0)
        • Google Cloud Professional (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • git
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ฏธ๊ตญ์œ ํ•™
    ์‹œ์นด๊ณ 
    ๋ฏธ๊ตญ๋น„์ž
    ๊ฐ€์„ํ•™๊ธฐ
    ์‹œ์นด๊ณ ๋Œ€
    CS
    AWS
    ์‹œ์นด๊ณ ๋Œ€ํ•™๊ต
    Java
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
Java 8. Interface
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”