[java] 작업 스케줄링과 쓰레드 풀
이번에는 자바에서 작업 스케줄링과 쓰레드 풀을 다루겠습니다. 이 두 가지는 병렬로 실행해야 하는 작업들의 효율적인 처리를 위해 중요한 개념입니다.
작업 스케줄링
작업 스케줄링은 작업을 실행할 시점을 관리하는 것입니다. 자바에서는 ScheduledExecutorService
를 사용하여 작업을 스케줄링할 수 있습니다. 예를 들어, 주기적으로 실행되어야 하는 작업이 있다면 scheduleAtFixedRate
또는 scheduleWithFixedDelay
메서드를 사용하여 구현할 수 있습니다.
다음은 scheduleAtFixedRate
메서드를 사용한 예제입니다.
import java.util.concurrent.*;
public class ScheduledTaskExample {
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Runnable task = () -> System.out.println("Executing task at " + System.currentTimeMillis());
scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
}
}
쓰레드 풀
쓰레드 풀은 미리 정해진 수의 쓰레드들을 관리하고 작업을 분배하여 처리하는 기법입니다. 이를 통해 쓰레드의 생성 및 소멸에 따른 오버헤드를 줄일 수 있습니다. 자바에서는 ExecutorService
인터페이스를 통해 쓰레드 풀을 사용할 수 있습니다.
다음은 ExecutorService
를 사용하여 쓰레드 풀을 생성하고 작업을 제출하는 예제입니다.
import java.util.concurrent.*;
public class ThreadPoolExample {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newFixedThreadPool(2);
Runnable task = () -> System.out.println("Executing task in thread: " + Thread.currentThread().getName());
threadPool.submit(task);
threadPool.submit(task);
threadPool.shutdown();
}
}
마무리
작업 스케줄링과 쓰레드 풀은 자바의 병렬 처리를 위해 중요한 요소입니다. 이를 잘 활용하여 안정적이고 효율적인 프로그램을 작성할 수 있습니다.
참고 문헌:
이상으로 작업 스케줄링과 쓰레드 풀에 대해 알아보았습니다. 더 궁금한 점이 있다면 언제든지 물어보세요.