쓰레드를 생성하는 방법은 크게 두가지로 나눌 수 있다.
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-(자막 번호) 다섯
'BACK > JAVA' 카테고리의 다른 글
[JAVA] 쓰레드의 동기화(메서드 동기화, 블록 동기화) (0) | 2022.08.10 |
---|---|
[JAVA] 쓰레드의 속성 (0) | 2022.08.09 |
[JAVA] 추상 클래스 (특징, 객체 생성 방법) (0) | 2022.08.04 |
[JAVA] 예외 : Checked Exception / UncheckedException (0) | 2022.08.01 |
[JAVA] 이너 클래스(인스턴스, 정적, 지역) (0) | 2022.07.28 |