Exeucutor
Executors.newFixedPoolSize( int ) ๋ก ์ํ๋ poolsize๋ฅผ ์ง์ ํด์ค๋ค
Executors์ submit๋ ์์
๋ค์ Thread Pool์์ ๊ณ์์คํ๋๊ฒ ๋๋ค.
Executors๋ shutdown() , awaitTermination() ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ฐ๋์ ์ข
๋ฃํด์ฃผ์ด์ผ ํ๋ค
Thread์ ์์
์ด ํ์ฌ์ค๋ ๋์ธ์ง ์์ค๋ ๋์ธ์ง, ์์
์ ์คํ ํ๋ฆ์ ์ ์ดํ ์ ์๊ฒ ๋์์ค๋ค.
์์
์คํ์ด ๊ผญ ๋น๋๊ธฐ์ผ ํ์๋ ์๋ค.
์ง๊ธ ๊น์ง์ ๋์ผํ Printer๋ฅผ ์์ ๋ก ์ฌ์ฉ
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");
}
}