티스토리 뷰

 

 

Executors
- 고수준 Concurrency 프로그래밍
- 그런 기능을 Executors에게 위임

- Executors가 스레드를 만들고 우리는 Runnalbe를 제공해주면 된다

(Runnalbe에 우리가 할 일만 정의하면 됨)

 

 

 

Executors가 하는 일
- 스레드 만들기 : 어플리케이션이 사용할 스레드 풀을 만들어 관리한다
- 스레드 관리 : 스레드 생명 주기를 관리한다
- 작업 처리 및 실행 : 스레드로 실행할 작업을 제공할 수 있는 API를 제공한다

 

 

 

주요 인터페이스

- Executors: excute(Runnalble) 많이 안씀
- ExecutorsService : Executors를 상속받은 인테페이스로 Callalbe도 실행할 수 있으며, Executors를 종료시키거나 여러    Callable을 동시에 실행하는 등의 기능을 제공한다 거의 이거 씀

 


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class App {
    public static void main(String[] args) {

        ExecutorService executorService = Executors.newSingleThreadExecutor();
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                System.out.println("Thread  " + Thread.currentThread().getName());
            }
        });
            executorService.shutdown();

    }
}

- executorService.shutdown() : 처리중인 작업 기다렸다가 종료

 

 

 

package java8study;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


public class App {
    public static void main(String[] args) {

        ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
        executorService.schedule(getRunnable("Hello"),3, TimeUnit.SECONDS);
        
        executorService.shutdown();
    }


    private static Runnable getRunnable(String messge){
        return ()-> System.out.println(messge + Thread.currentThread().getName());
    }

}

- executorService.schedule(getRunnable("Hello"),3, TimeUnit.SECONDS) : 3초뒤에 해당 스레드 실행되도록

 

 

 

강의 : 인프런 더 자바, Java8

댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday