메인 스레드와 작업 스레드는 다음과 같은 기본적인 차이가 있다
메인 스레드(Main Thread):
- 프로그램이 시작될 때 자동으로 생성
- 주로 사용자 인터페이스(UI)를 관리하고, 프로그램의 진입점(entry point)으로서의 역할
- 프로그램의 수명 주기를 제어하고, 다른 스레드를 생성하고 관리하는 주체
- 일반적으로 프로그램이 종료될 때까지 실행
- 일반적으로 작업 스레드를 생성하고 시작하는 역할
작업 스레드(Worker Thread):
- 메인 스레드 이외에 생성되는 스레드로, 프로그램이 병렬 또는 동시 작업을 수행
- 메인 스레드에서 비교적 오래 걸리는 작업이나 I/O 작업 등을 처리하기 위해 사용
- 병렬 처리를 통해 성능을 향상시키거나, 프로그램의 응답성을 향상
- 일반적으로 메인 스레드에 의해 생성되고 시작
- 작업이 완료되면 종료되거나, 필요에 따라 재사용
스레드 Thread
프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미
멀티스레드는 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행하는 실행 방식
https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)
아래는
메인스레드와 작업스레드를 합해 멀티스레드를 구현한 간단한 코드이다.
메인 스레드
main() 메소드의 첫 코드부터 순차적으로 실행
작업 스레드
java.lang 패키지에 있는 Thread 클래스로 객체를 직접 생성
Runnable 구현 객체를 매개값으로 갖는 생성자를 호출
package threadEx;
class ThreadEx01_1 extends Thread {
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(getName());
}
}
}
class ThreadEx01_2 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(Thread.currentThread().getName());
}
}
}
class ThreadEx01 {
public static void main(String[] args) {
ThreadEx01_1 t1 = new ThreadEx01_1();
t1.start();
Runnable r1 = new ThreadEx01_2();
Thread t2 = new Thread(r1);
t2.start();
}
}
//실행결과
Thread-0
Thread-0
Thread-0
Thread-1
Thread-1
Thread-1
'JAVA' 카테고리의 다른 글
getContextPath vs RequestURI, 차이 (0) | 2023.03.30 |
---|---|
console 줄바꿈 (0) | 2023.03.30 |
JAVA 주석 (한줄, 여러줄) (0) | 2023.03.22 |
log4j - Logging Levels(로그 레벨) (0) | 2023.03.22 |
port 포트종료 java.io.IOException: java.lang.reflect.InvocationTargetException (0) | 2023.03.22 |