Java

127. 쓰레드의 구현과 실행 - 패스트캠퍼스 백엔드 부트캠프 3기

gkss2tpt 2025. 1. 6. 11:59

1. 쓰레드의 구현과 실행

  • Thread클래스를 상속
class MyThread extends Thread {
    public void run() {	// Thread클래스의 run()을 오버라이딩
        ...
    }
}

MyThread t1 = new MyThread();	// 쓰레드의 생성
t1.start()	// 쓰레드의 실행
  • Runnable인터페이스를 구현
class MyThread2 implements Runnable {
    public void run() {	// Runnable인터페이스의 추상메서드 run()을 구현
    	...
    }
}

public interface Runnable {	// 구현되어 있음
    public abstract void run();
}

Runnable r = new MyThread2();
Thread t2 = new Thread(r);	// Thread(Runnable r)
//	Thread t2 = new Thread(new MyThread2());
t2.start();

 

2. 예제

public class Ex01 {

    static class MyThread2 extends Thread{
        public void run() {
            for (int i = 0; i < 500; i++) {
                System.out.print(getName());
            }
        }
    }

    static class MyThread1 implements Runnable{
        public void run() {
            for (int i = 0; i < 500; i++) {
                System.out.print(Thread.currentThread().getName());
                // Thread.currentThread()현재 실행중인 Thread를 반환한다.
            }
        }
    }

    public static void main(String[] args) {
        MyThread2 t2 = new MyThread2();

        Thread t = new Thread(new MyThread1());
        t.start();  // 번갈아 가며 실행된다
        t2.start();
    }
}

 

3. 쓰레드의 실행 - start()

  • 쓰레드를 생성한 후에 start()를 호출해야 쓰레드가 작업을 시작한다.
ThreadEx1_1 t1 = new ThreadEx1_1();	// 쓰레드 t1을 생성한다.
ThreadEx1_1 t2 = new ThreadEx1_1();	// 쓰레드 t2를 생성한다.

t1.start();	// 쓰레드 t1을 실행시킨다.	OS스케쥴러가 실행순서 결정
t2.start();	// 쓰레드 t2를 실행시킨다.	OS스케쥴러가 실행순서 결정 
// 누가 먼저 실행 될지 알 수 없음