본문 바로가기

개발자노트

스레드 [Thread]의 기본사용법

출력을 해보면 우리가 원래 알던 for문처럼 순서대로 나오는 것이 아니라,

두 스레드 중 먼저 일을 처리한 쪽이 나오면서 순서가 뒤죽박죽인 것을 볼 수 있을 것이다.

package class05;

// [스레드]
// : 기사,컴퓨터구조,프로세스,..

class Th1 extends Thread {
	// 스레드는 작업을 처리하는 주체(대상)
	// 그래서 오버라이드가 필수

	@Override
	public void run() {
		for (int i = 0; i <= 10; i++) {
			System.out.println("클래스로 만든 스레드" + i);

		}
	}

}
class Th2 implements Runnable{
	// 인터페이스의 모든 메서드는 abstract 추상메서드
	// 추상메서드는 오버라이딩을 강제
	// -> 인터페이스가 가지는 "강제성"!
 
	@Override
	public void run() { // 스레드라면 run을 무조건 가지고 있어야해!
		for (int i = 0; i <= 10; i++) {
			System.out.println("인터페이스로 만든 스레드"+i);
		}
		
	}
	
}
public class Test06 {

	public static void main(String[] args) {


		Th1 t1=new Th1(); // 클래스로 만든 스레드 
		Th2 t2=new Th2(); // 인터페이스로 만든 스레드
		
		
		Thread t3=new Thread(t2); //이게 스레드를 만드는 방법
		
		t1.start();  // 스레드야, 너의 일을 시작해!
		t3.start();  // run()
		
		

	}

}