728x90
Thread : 프로세스보다 작은 실행 흐름의 최소 단위

 

  • 어떤 프로세스든지 하나 이상의 쓰레드가 수행된다.
    (프로세스 : 프로그램을 실행시켜서 동작하게 만든것.)
  • web에는 기본적으로 쓰레드가 적용되어 있다.
  • 스레드를 이용하여 하나의 프로세스에서 여러개의 처리 루틴을 가질 수 있다.
    (시간을 절약할 수 있다)
  • 자바에서는 스레드도 하나의 인스턴스로 정의한다.
  • 스레드는 스레드만의 main메소드를 지닌다
    (단 메소드명은 main이 아닌 run으로 사용한다)

스레드를 생성하는 방법

  1. Thread 클래스를 상속받아 사용 (확장)
  2. Runnable 인터페이스를 사용 (구현)

Runnable은 run( )이라는 단 하나의 메소드를 제공한다. 이에 반해 스레드 클래스는 많은 메소드를 포함하고 있다.

 

스레드 클래스를 상속받아 사용할 경우에는, 상위 클래스(스레드 클래스)로부터 run메소드를 오버라이딩 하여 사용한다.

스레드 클래스 내부에는 sleep라는 메소드가 있는데, 이는 static 메소드로서 실행흐름을 일시적으로 멈추는 역할을 한다.

 

Runnable 인터페이스로 구현한 클래스를 스레드로 바로 시작할 수는 없다. 스레드 클래스의 생성자에 해당 객체를 추가하여 시작해 주어야만 한다. 하지만 스레드 클래스를 상속하여 만든 클래스는 strat( )메소드를 바로 호출할 수 있다. 스레드를 시작하는 메소드는 start( )이며, 스레드가 시작하면 수행되는 메소드는 run( ) 이다.

 

ex)

public class Thread01 extends Thread{
	public void run() {
		System.out.println("스래드 시작");
	}

	public static void main(String[] args) {
		Thread01 t01 = new Thread01();
		t01.start();
	}
}

 

public class Thread02 extends Thread{
	int seq;
	public Thread02(int seq) {
		this.seq = seq;
	}

	@Override
	public void run() {
		System.out.println(this.seq + " 스래드 시작");
		try {
			Thread.sleep(1000);//1000 = 1초
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println(this.seq + " 스래드 끝");
	}
	
	public static void main(String[] args) {
		System.out.println("메인 시작");
		for (int i = 0; i < 10; i++) {
			Thread02 t02 = new Thread02(i);
			t02.start();
		}
		System.out.println("메인 끝");
		
	}
}
  • Thread.sleep( ) : 정해진 시간만큼 멈추기

'JAVA' 카테고리의 다른 글

Net  (0) 2021.08.03
GUI  (0) 2021.08.01
한글깨짐 오류  (0) 2021.07.30
DAO와 DTO  (0) 2021.07.29
clean  (0) 2021.07.28

+ Recent posts