Executor

Exeucutor

Executors.newFixedPoolSize( int ) ๋กœ ์›ํ•˜๋Š” poolsize๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค

Drawing

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");
    }
}

Last updated