지금 내가 사용하는 생성 방식은 Runnable + Thread 방식이고, 최근에는 ExecutorService 기반의 스레드 풀 방식을 사용한다고 한다.
* 스레드 생성 방식 비교: thread 직접 생성 vs ExecutorService
1. Runnable + Thread 방식
Runnable r = new Runnable() {
public void run() {
// 작업 처리
}
};
Thread t = new Thread(r);
t.start();
- Thread 객체를 직접 생성하고 실행
- 스레드를 재사용하지 않고 매번 새 스레드 생성
- 관리와 종료 제어가 불편함 (종료 제어 코드를 추가로 구성해야 함)
2. ExecutorService 방식
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -> {
// 작업 처리
});
- 스레드 풀 관리
- 큐 기반의 작업 처리
여기서 내가 사용한 Runnable + Thread 방식을 정리해 보려고 한다.
private Vector<Thread> m_threads = new Vector();
private void doWork() {
for (int i = 0; i < m_threadCnt; i++) {
threadsRun();
}
}
public void threadsRun() {
Runnable r = new Runnable() {
public void run() {
String doc_id = dt.doWork();
...
}
};
Thread thread = new Thread(r);
thread.start();
m_threads.add(thread);
}
- doWork()에서 n개의 스레드 생성
- 각 스레드는 dt.doWork() 수행
- 각 스레드 객체는 Vector에 넣어서 추후 관리 가능
- 종료 제어 코드도 추가해야 함
'Java' 카테고리의 다른 글
| 암호화 알고리즘 (1) | 2026.01.31 |
|---|---|
| [java] 통계 시스템 제작 # 01 (0) | 2025.07.09 |
| [java] db에 적재된 디렉토리 경로 수정하기 (3) | 2024.09.26 |
| [java] 서버에서 db2 데이터 이관 (0) | 2024.08.12 |