[java] 자바에서 쓰레드 풀을 사용하는 이유
자바 애플리케이션은 일반적으로 동시에 여러 작업을 수행해야 합니다. 이때 이 작업들을 처리하기 위해 쓰레드를 사용할 수 있습니다. 하지만 쓰레드를 직접 생성하고 관리하는 것은 비용이 많이 듭니다. 이런 문제를 해결하기 위해 쓰레드 풀을 사용합니다.
쓰레드 풀의 장점
쓰레드 풀을 사용하면 다음과 같은 이점을 얻을 수 있습니다:
- 자원 관리: 쓰레드 풀은 필요한 만큼의 쓰레드를 미리 생성하고 유지함으로써 자원을 효율적으로 관리할 수 있습니다.
- 성능 개선: 매번 새로운 쓰레드를 생성하는 대신 미리 생성한 쓰레드를 재사용함으로써 응답 시간을 단축시킬 수 있습니다.
- 스레드 수 제어: 쓰레드 풀을 사용하면 동시에 실행되는 쓰레드의 최대 개수를 제어할 수 있습니다.
쓰레드 풀 사용 예시
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
threadPool.execute(new MyTask(i));
}
threadPool.shutdown();
}
}
class MyTask implements Runnable {
private int taskId;
public MyTask(int id) {
this.taskId = id;
}
public void run() {
System.out.println("Task ID : " + taskId + " performed by " + Thread.currentThread().getName());
}
}
위 예시는 ExecutorService
와 Executors
클래스를 사용하여 쓰레드 풀을 생성하고 사용하는 방법을 보여줍니다.
쓰레드 풀은 자바 애플리케이션에서 동시에 여러 작업을 효율적으로 처리하기 위한 중요한 도구입니다. 이를 통해 자원을 효율적으로 활용하고 성능을 향상시킬 수 있습니다.
참고 자료
- Oracle Java Documentation
- Baeldung, “Guide to Java ThreadPool” (https://www.baeldung.com/thread-pool-java)