본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

Thread 메인스레드, 작업스레드

메인 스레드와 작업 스레드는 다음과 같은 기본적인 차이가 있다

메인 스레드(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) 

 

스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으

ko.wikipedia.org

 

아래는

메인스레드와 작업스레드를 합해 멀티스레드를 구현한 간단한 코드이다.

 

메인 스레드
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