Exeucutor
Executors.newFixedPoolSize( int ) ๋ก ์ํ๋ poolsize๋ฅผ ์ง์ ํด์ค๋ค
Executors์ submit๋ ์์
๋ค์ Thread Pool์์ ๊ณ์์คํ๋๊ฒ ๋๋ค.
Executors๋ shutdown() , awaitTermination() ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ฐ๋์ ์ข
๋ฃํด์ฃผ์ด์ผ ํ๋ค
Thread์ ์์
์ด ํ์ฌ์ค๋ ๋์ธ์ง ์์ค๋ ๋์ธ์ง, ์์
์ ์คํ ํ๋ฆ์ ์ ์ดํ ์ ์๊ฒ ๋์์ค๋ค.
์์
์คํ์ด ๊ผญ ๋น๋๊ธฐ์ผ ํ์๋ ์๋ค.
How do code?
result
1. Printer Run
2. Start Printer Scheduling ...
3. Printer Add more
Start Scheduler ... 2
PRINTER NAME ::pool-1-thread-1
PRINTING :: A
PRINTING :: B
PRINTING :: C
COMPLETE
REMOVED = A,B,C
PRINTER NAME ::pool-1-thread-1
PRINTING :: 1
PRINTING :: 2
PRINTING :: 3
COMPLETE
REMOVED = 1,2,3
4. Printer is Empty ...
5. Printer Stop
Scheduled Executor
์ฃผ๊ธฐ์ ์ผ๋ก ์์
์ ์ํํ ์ ์์ต๋๋ค.
Executors๋ฅผ Executors.newSingleThreadScheduledExecutor();
๋ก ๋ฐ๊ฟ์ค ๋ค,
Main => Future<?> executors = printExecutor.schedule(scheduler, 1, TimeUnit.SECONDS);
์ด๋ ๊ฒ ์์ ํด ์ค๋๋ค.
schedule( {Callable} , {delay} , {Period} )
๋
{delay}
๋งํผ ์ดํ์ {Period}
์ฃผ๊ธฐ๋ก {Callable}
๋ฅผ ์คํํฉ๋๋ค.
public class Main {
private final static ScheduledExecutorService printExecutor = PrintExecutor.scheduled;
public static void main(String[] args) {
System.out.println("1. Printer Run");
System.out.println("2. Start Printer Scheduling ... ");
PrinterScheduler scheduler = PrinterScheduler.init(Printer.job("A", "B", "C"));
Future<?> executors = printExecutor.schedule(scheduler, 1, TimeUnit.SECONDS);
System.out.println("3. Printer Add more");
scheduler.addSchedule(Printer.job("1", "2", "3"));
while (true){
if (scheduler.isEmpty()) {
System.out.println("4. Printer is Empty ...");
break;
}
}
printExecutor.shutdown();
System.out.println("5. Printer Stop");
}
}