티스토리 뷰
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
'Java' 카테고리의 다른 글
JVM GC(Garbage Collection) 종류 및 내부 원리 정리 (0) | 2023.07.19 |
---|---|
[Java8] CompletableFuture-Concurrent 프로그래밍3. Callable과 Future (0) | 2021.12.08 |
[Java8] CompletableFuture-Concurrent 프로그래밍1. 스레드 (0) | 2021.12.07 |
[Java8] Optional 소개 및 API (0) | 2021.07.18 |
[Java8] Stream API 예제 (0) | 2021.07.10 |
댓글
최근에 올라온 글
최근에 달린 댓글
링크
- Total
- Today
- Yesterday