한글처럼 문장을 적으면, 문법에 어긋나는 곳에 대한 빨간줄을 표시한다.
스레드의 생명주기( Life Cycle )
스레드 클래스를 상속받아서,
run매소드를 오버라이딩을 한다.
Start는 실행을 알리고 -> run() 을 수행
Run은 실제로 실행하는 것을 의미한다.
왜 두번째 방법이 생김??
자바에서 부모 클래스를 2가지 못가짐 - 다중상속 지원 안되서
그래서 Runnable 인터페이스를 이용해서 구현을한다.
스레드의 기본 예제이다.
class Thread_Ex1 extends Thread {
public void run() {
try {
for (int i = 0; i < 20; i++) {
Thread.sleep(500);
System.out.println(i + "번 : " + i + " * " + i + "= " + (i * i));
}
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
public class main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread_Ex1 thread = new Thread_Ex1();
thread.start();
System.out.println("스레드 종료 전에 다음 코드 실행 확인.");
try {
for (int i = 0; i < 10; i++) {
Thread.sleep(800);
System.out.println("원래 스레드 : " + i);
}
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
class Thread_Ex3 extends Thread {
public Thread_Ex3(String name){
super(name);
}
public void run(){
try {
for(int i=0; i<5; i++)
{
Thread.sleep(1000);
System.out.println(i + "번" + super.getName() + ":스레드");
}
}
catch (InterruptedException e){
System.out.println(e.getMessage());
}
}
}
public class thread_name {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread_Ex3 ob1 = new Thread_Ex3("처음");
Thread_Ex3 ob2 = new Thread_Ex3("두번");
Thread_Ex3 ob3 = new Thread_Ex3("세음");
ob1.start();
ob2.start();
ob3.start();
}
}
cpu에 먼저 접근하는 놈이 먼저 실행되기 때문에
실행 결과는 다 다르다.