[Java] μΈν°νμ΄μ€μ λ€νμ±
βΆ μΈν°νμ΄μ€μ μν
μΈν°νμ΄μ€μ μν μ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€κ° μ΄λ€ κΈ°λ₯μ λ©μλλ₯Ό μ 곡νλμ§ λͺ μνλ κ²μ΄λ€.
β
β
β
βΆ μΈν°νμ΄μ€μ λ€νμ±
μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ©΄ ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μ λ§μ΄ μμ νμ§ μκ³ κΈ°λ₯μ μΆκ°νκ±°λ λ€λ₯Έ κΈ°λ₯μ μ¬μ©ν μ μλ€.
β
β
β
βΆ κ³ κ° μλ΄ μ ν λ°°λΆ νλ‘κ·Έλ¨ λ§λ€κΈ°
package scheduler;
public interface Scheduler {
public void getNextCall();
public void sendCallToAgent();
}
package scheduler;
public class RoundRobin implements Scheduler {
@Override
public void getNextCall() {
System.out.println("μλ΄ μ νλ₯Ό μμλλ‘ λκΈ°μ΄μμ κ°μ Έμ΅λλ€.");
}
@Override
public void sendCallToAgent() {
System.out.println("λ€μ μμ μλ΄μμκ² λ°°λΆν©λλ€.");
}
}
package scheduler;
public class LeastJob implements Scheduler {
@Override
public void getNextCall() {
System.out.println("μλ΄ μ νλ₯Ό μμλλ‘ λκΈ°μ΄μμ κ°μ Έμ΅λλ€.");
}
@Override
public void sendCallToAgent() {
System.out.println("νμ¬ μλ΄ μ
λ¬΄κ° μκ±°λ λκΈ°κ° κ°μ₯ μ μ μλ΄μμκ² ν λΉν©λλ€.");
}
}
package scheduler;
public class PriorityAllocation implements Scheduler {
@Override
public void getNextCall() {
System.out.println("κ³ κ° λ±κΈμ΄ λμ κ³ κ°μ μ νλ₯Ό λ¨Όμ κ°μ Έμ΅λλ€.");
}
@Override
public void sendCallToAgent() {
System.out.println("μ
무 skill κ°μ΄ λμ μλ΄μμκ² μ°μ μ μΌλ‘ λ°°λΆν©λλ€.");
}
}
package scheduler;
import java.io.IOException;
public class SchedulerTest {
public static void main(String[] args) throws IOException {
System.out.println("μ ν μλ΄ ν λΉ λ°©μμ μ ννμΈμ.");
System.out.println("R : νλͺ
μ© μ°¨λ‘λ‘ ν λΉ ");
System.out.println("L : μ¬κ³ μκ±°λ λκΈ°κ° κ°μ₯ μ μ μλ΄μμκ² ν λΉ ");
System.out.println("P : μ°μ μμκ° λμ κ³ κ° λ¨Όμ ν λΉ ");
int ch = System.in.read(); // ν λΉ λ°©μμ μ
λ ₯λ°μ ch λ³μμ λμ
Scheduler scheduler = null;
if (ch == 'R' || ch == 'r') { // μ
λ ₯λ°μ κ°μ΄ R λλ r μ΄λ©΄ RoundRobin ν΄λμ€ μμ±
scheduler = new RoundRobin();
}
else if (ch == 'L' || ch == 'l') { // μ
λ ₯λ°μ κ°μ΄ L λλ lμ΄λ©΄ LeastJob ν΄λμ€ μμ±
scheduler = new LeastJob();
}
else if (ch == 'P' || ch == 'p') { // μ
λ ₯λ°μ κ°μ΄ P λλ pμ΄λ©΄ PriorityAllocation ν΄λμ€ μμ±
scheduler = new PriorityAllocation();
}
else {
System.out.println("μ§μλμ§ μλ κΈ°λ₯μ
λλ€.");
return; // λ©μλλ₯Ό μ’
λ£μν€κΈ° μν΄μ μ°λ κ². break;μ λΉμ·ν κ°λ
// breakλ μ΄ λ¬Έμ₯λ§ λλ΄κ³ κ³μ μ€νλλλ° returnμ μμ ν¨μλμμ΄ λλ¨.
}
scheduler.getNextCall();
scheduler.sendCallToAgent(); // μ΄λ€ μ μ±
μΈκ°μ μκ΄μμ΄ μΈν°νμ΄μ€μ μ μΈν λ©μλ νΈμΆ
}
}
-12νμμ λ¬Έμλ₯Ό μ λ ₯λ°μΌλ©΄ μ λ ₯ λ¬Έμμ ν΄λΉνλ λ°°λΆ μ μ± ν΄λμ€λ₯Ό μμ±νμ¬ λμ νλ€.
RoundRobin, LeastJob, PriorityAllocation ν΄λμ€λ‘ μμ±ν μΈμ€ν΄μ€λ λͺ¨λ Schedulerν λ³μμ λμ ν μ μλ€. κ·Έλ¦¬κ³ μ¬μ©ν μΈμ€ν΄μ€κ° μ΄λ€ ν΄λμ€λ‘ μμ±λμλμ§μ μκ΄μμ΄ 29~30νμ²λΌ μΈν°νμ΄μ€μμ μ 곡νλ λ©μλλ₯Ό νΈμΆνλ©΄ λλ€.
β
β
<μ€ν κ²°κ³Ό>

βΆ μΈν°νμ΄μ€ μμ
μΈν°νμ΄μ€λ μΆμ λ©μλλ‘ μ΄λ£¨μ΄μ§λ―λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμΌλ©° λ©€λ² λ³μλ μ¬μ©ν μ μλ€.
κ·Έλ°λ° μΈν°νμ΄μ€μ μ€λ₯Έμͺ½ μ½λμ κ°μ΄ λ³μλ₯Ό μ μΈν΄λ μ€λ₯κ° λ°μνμ§ μλλ€. κ·Έ μ΄μ λ μΈν°νμ΄μ€μ μ μΈν λ³μλ₯Ό μ»΄νμΌνλ©΄ μμλ‘ λ³νλκΈ° λλ¬Έμ΄λ€.
β