forked from whiteship/java8
-
Notifications
You must be signed in to change notification settings - Fork 0
Executors
Jeonghyun Kang edited this page Jun 5, 2022
·
1 revision
- 쓰레드 만들기: 애플리케이션이 사용할 쓰레드 풀을 만들어 관리한다.
- 쓰레드 관리: 쓰레드 생명 주기를 관리한다.
- 작업 처리 및 실행: 쓰레드로 실행할 작업을 제공할 수 있는 API를 제공한다.
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(() -> {
System.out.println("Thread " + Thread.currentThread().getName());
});
// Thread pool-1-thread-1
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(new Runnable() {
@Override
public void run() {
System.out.println("Thread " + Thread.currentThread().getName());
}
});
// Thread pool-1-thread-1
executorService.shutdown(); // 처리중인 작업 기다렸다가 종료
executorService.shutdownNow(); // 강제 종료
private Runnable getRunnable(String message) {
return () -> System.out.println(message + Thread.currentThread().getName());
}
ExecutorService executorService = Executors.newFixedThreadPool(2);
executorService.submit(getRunnable("FixedThreadPool_1"));
executorService.submit(getRunnable("FixedThreadPool_2"));
executorService.submit(getRunnable("FixedThreadPool_3"));
executorService.submit(getRunnable("FixedThreadPool_4"));
executorService.submit(getRunnable("FixedThreadPool_5"));
FixedThreadPool_2pool-1-thread-2
FixedThreadPool_1pool-1-thread-1
FixedThreadPool_3pool-1-thread-2
FixedThreadPool_5pool-1-thread-2
FixedThreadPool_4pool-1-thread-1
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.schedule(getRunnable("SingleThreadScheduledExecutor_1"), 3, TimeUnit.SECONDS);
executorService.scheduleWithFixedDelay(getRunnable("SingleThreadScheduledExecutor_2"), 1, 2, TimeUnit.SECONDS);
SingleThreadScheduledExecutor_2pool-1-thread-1
SingleThreadScheduledExecutor_1pool-1-thread-1
SingleThreadScheduledExecutor_2pool-1-thread-1
...
...
...