BACK/JAVA

[JAVA] 쓰레드 생성 및 실행(Thread클래스, Runnable 인터페이스)

연듀 2022. 8. 8. 21:42

 

 

쓰레드를 생성하는 방법은 크게 두가지로 나눌 수 있다. 

 

1. Thread클래스를 상속받아 run() 메서드를 오버라이딩

2. Runnable 인터페이스 구현 객체를 생성한 후 Thread 생성자로 Runnable 객체 전달 

 

 

2가지 방법 모두 run() 메서드를 재정의하고 있고, 결과적으로 Thread 객체를 생성한다.

이렇게 생성한 쓰레드를 실행하는 방법은 Thread 객체 내의 start() 메서드를 호출하는 것이다. 

 

 

 

방법1

// Thread 클래스 상속해 클래스를 생성한 후 쓰레드 2개 생성 

class SMIFileThread extends Thread{
    @Override
    public void run(){
        String[] strArray={"하나", "둘", "셋", "넷", "다섯"};
        try{Thread.sleep(10);} catch(InterruptedException e){}

        for(int i=0; i<strArray.length; i++){
            System.out.println("-(자막 번호) "+strArray[i]);
            try{Thread.sleep(200);} catch(InterruptedException e){}
        }
    }
}

public class Main{
    public static void main(String[] args) {
        Thread SMIFileThread = new SMIFileThread();
        SMIFileThread.start();

        int[] intArray={1,2,3,4,5};

        for(int i=0; i<intArray.length; i++){
            System.out.print("(비디오 프레임)"+intArray[i]);
            try{Thread.sleep(200);}catch (InterruptedException e){}
        }
    }
}

 

 

방법2


// Runnable 인터페이스를 상속해 클래스를 생성한 후 쓰레드 2개 생성
class SMIFileThread implements Runnable{
    @Override
    public void run(){
        String[] strArray={"하나", "둘", "셋", "넷", "다섯"};
        try{Thread.sleep(10);} catch(InterruptedException e){}

        for(int i=0; i<strArray.length; i++){
            System.out.println("-(자막 번호) "+strArray[i]);
            try{Thread.sleep(200);} catch(InterruptedException e){}
        }
    }
}

public class Main{
    public static void main(String[] args) {
        // 객체 생성
        Runnable smiFileRunnable = new SMIFileThread();
       // SMIFileThread.start();
        Thread thread=new Thread(smiFileRunnable);
        thread.start();

        int[] intArray={1,2,3,4,5};

        for(int i=0; i<intArray.length; i++){
            System.out.print("(비디오 프레임)"+intArray[i]);
            try{Thread.sleep(200);}catch (InterruptedException e){}
        }
    }
}

 

 

실행 결과 

(비디오 프레임)1-(자막 번호) 하나
(비디오 프레임)2-(자막 번호) 둘
(비디오 프레임)3-(자막 번호) 셋
(비디오 프레임)4-(자막 번호) 넷
(비디오 프레임)5-(자막 번호) 다섯