โถ ์ธํฐํ์ด์ค์ ์ญํ
์ธํฐํ์ด์ค์ ์ญํ ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋์ง ๋ช ์ํ๋ ๊ฒ์ด๋ค.
โ
โ
โ
โถ ์ธํฐํ์ด์ค์ ๋คํ์ฑ
์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ๋ง์ด ์์ ํ์ง ์๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
โ
โ
โ
โถ ๊ณ ๊ฐ ์๋ด ์ ํ ๋ฐฐ๋ถ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
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ํ์ฒ๋ผ ์ธํฐํ์ด์ค์์ ์ ๊ณตํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋๋ค.
โ
โ
<์คํ ๊ฒฐ๊ณผ>
โถ ์ธํฐํ์ด์ค ์์
์ธํฐํ์ด์ค๋ ์ถ์ ๋ฉ์๋๋ก ์ด๋ฃจ์ด์ง๋ฏ๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ ๋ฉค๋ฒ ๋ณ์๋ ์ฌ์ฉํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์ธํฐํ์ด์ค์ ์ค๋ฅธ์ชฝ ์ฝ๋์ ๊ฐ์ด ๋ณ์๋ฅผ ์ ์ธํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ๊ทธ ์ด์ ๋ ์ธํฐํ์ด์ค์ ์ ์ธํ ๋ณ์๋ฅผ ์ปดํ์ผํ๋ฉด ์์๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ด๋ค.
โ
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ ์ ๋ฉ์๋ (0) | 2021.02.21 |
---|---|
[Java] ๋ํดํธ ๋ฉ์๋ (0) | 2021.02.20 |
[Java] ์ธํฐํ์ด์ค (0) | 2021.02.20 |
[Java] ๊ฐ๋ ์ก๊ธฐ 2 (๊ณต๋ถ ๊ธฐ๋ก) (0) | 2021.02.20 |
[Java] ๊ฐ๋ ์ก๊ธฐ (๊ณต๋ถ ๊ธฐ๋ก) ์์ฑ์ค (0) | 2021.02.20 |
๋๊ธ