Java Thread 클래스

Thread 클래스

Thread 클래스를 이용하는 방식은 java.lang.Thread 클래스를 상속받아서 run 메소드를 재정의(Overriding)한다. run 메소드는 스레드가 실행 동작하는 메소드로서 개발자는 이 메소드에 실행 동작할 코드를 기술하면 된다.

예제 1) Thread 1개 실행 다음은 Thread를 상속 받아서 클래스를 구현 생성하는 예제이다.

package com.devkuma.tutorial.thread;

public class MyThread extends Thread {

    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("This is thread. i=" + i);
        }
    }

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

실행 결과:

This is thread. i=0
This is thread. i=1
This is thread. i=2
This is thread. i=3
This is thread. i=4
This is thread. i=5
This is thread. i=6
This is thread. i=7
This is thread. i=8
This is thread. i=9

단순히 1개의 스레드 실행되기 때문에 일반 반복문과 동일한 결과를 볼 수 있다.

예제 2) Thread 2개 실행

다음은 두개의 스레드를 갖는 경우를 살펴보겠다.

package com.devkuma.tutorial.thread;

public class MyThread2 extends Thread {

    public MyThread2(String name) {
        super(name);
    }

    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(super.getName() + " thread. i=" + i);
        }
    }

    public static void main(String[] args) {
        MyThread2 thread1 = new MyThread2("first");
        MyThread2 thread2 = new MyThread2("second");
        thread1.start();
        thread2.start();
    }
}

실행 결과:

first thread. i=0
first thread. i=1
second thread. i=0
second thread. i=1
second thread. i=2
first thread. i=2
second thread. i=3
second thread. i=4
second thread. i=5
second thread. i=6
second thread. i=7
second thread. i=8
second thread. i=9
first thread. i=3
first thread. i=4
first thread. i=5
first thread. i=6
first thread. i=7
first thread. i=8
first thread. i=9

예제1)과 비교하면 첫번째 스레드(first thread)와 두번째 스레드(second thread)가 불규칙하게 실행 되면서 각자의 결과를 표시하는 것을 볼 수 있다.




최종 수정 : 2021-08-27