출력을 해보면 우리가 원래 알던 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()
}
}
'개발자노트' 카테고리의 다른 글
반복문 for / for each + 컬렉션 [Iterator] (0) | 2022.06.27 |
---|---|
스레드 [Thread] 의 동기화(synchronized) - 티켓팅 예제 (0) | 2022.06.24 |
스레드[Thread]의 기본원리 (0) | 2022.06.24 |
예외처리 - 나만의 예외 만들기 (0) | 2022.06.24 |
예외처리 throw (0) | 2022.06.24 |