반응형
Executor란?
스레드를 관리하고 작업을 실행하기 위한 인터페이스로 개발자가 간편하게 멀티스레드 환경을 다룰 수 있도록 도와준다.
ExecutorService는 다음 작업이 들어올 때까지 대기를 하기 때문에 프로세스를 명시적으로 종료시켜야 된다.
Executors가 하는 일
쓰레드 만들기 : 애플리케이션이 사용할 쓰레드 풀을 만들어 관리한다.
쓰레드 관리 : 쓰레드 생명 주기를 관리한다.
작업 처리 및 실행 : 쓰레드로 실행할 작업을 제공할 수 있는 API를 제공한다.
주요 인터페이스
Executor : execute(Runnable)
ExecutorService : Executor 상속 받은 인터페이스로, Callable도 실행할 수 있으며, Executor를 종료 시키거나, 여러 Callable을 동시에 실행하는 등의 기능을 제공한다.
예시) ExecutorService로 작업 실행하기
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(() -> {
// 출력 : sjmoon pool-1-thread-1
System.out.println("sjmoon " + Thread.currentThread().getName());
});
//ExecutorService로 멈추기
executorService.shutdown(); // 처리중인 작업 기다렸다가 종료
executorService.shutdownNow(); // 당장 종료
ScheduledExecutorService : ExecutorService를 상속 받은 인터페이스로 특정 시간 이후에 또는 주기적으로 작업을 실행할 수 있다.
예시)
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task = () -> System.out.println("Scheduled Task executed!");
// 주기적으로 작업을 실행 (초기 지연: 2초, 주기: 3초)
executor.scheduleAtFixedRate(task, 2, 3, TimeUnit.SECONDS);
// 10초 후에 작업 실행 후 종료
executor.schedule(() -> {
System.out.println("One-time Task executed!");
executor.shutdown();
}, 10, TimeUnit.SECONDS);
결과값
Scheduled Task executed!
Scheduled Task executed!
Scheduled Task executed!
One-time Task executed!
반응형
'Java' 카테고리의 다른 글
[자바] CompletableFuture (0) | 2023.07.02 |
---|---|
[자바] Callable과 Future (0) | 2023.07.01 |
[자바] Optional이란? (0) | 2023.06.29 |
[자바] 스트림(stream)이란? (0) | 2023.03.25 |
[자바] 기본 메소드(Default Method)와 스태틱 메소드(Static Method) (0) | 2023.03.25 |