Sr. 아니요. | 키 | 예약된 스레드 풀 | 단일 스레드 실행기 |
1 | 기본 | 주어진 지연 후에 실행되거나 주기적으로 실행되도록 명령을 예약할 수 있는 스레드 풀을 만듭니다. | 작업은 순차적으로 실행되도록 보장되며 주어진 시간에 하나 이상의 작업이 활성화되지 않습니다. |
2 | 대기열 | Delay Queue를 사용하여 작업을 저장합니다. 시간 지연에 따라 작업을 예약합니다. | 블로킹 큐를 사용합니다. |
3 | 스레드 수명 | 유휴 상태인 경우에도 풀에 보관할 스레드 수 | 작업으로 인해 스레드가 종료된 경우 스레드를 재생성합니다. |
4. | 스레드 풀 크기 | 항상 단일 스레드가 실행 중입니다. | 스레드 풀은 0개의 스레드에서 Integer.MAX_VALUE까지 증가할 수 있습니다. |
5. | 사용 사례 | 동시 작업을 제한하려면 fixedthreadpool을 사용해야 합니다. | 이 유형의 풀은 Task1이 항상 task2보다 먼저 실행되도록 하려는 경우에 사용할 수 있습니다. |
ScheduledThreadPool의 예
public class ScheduledThreadPoolExample {
public static void main(String args[]) {
ScheduledExecutorService services = Executors.newScheduledThreadPool(10);
services.schedule(new Task(), 10, TimeUnit.SECONDS);
services.scheduleAtFixedRate(new Task(), 15, 10, TimeUnit.SECONDS);
//(new Thread(new Main())).start();
}
}
public class Task implements Runnable {
@Override
public void run() {
System.out.println("In Run");
}
}
SingleThreadExecutor의 예
public class Main {
public static void main(String args[]) {
ExecutorService services = Executors.newSingleThreadExecutor();
Future<?> future = services.submit(new Task());
}
}
public class Task implements Runnable {
@Override
public void run() {
System.out.println("In Run");
}
}