헬린코린이
[JAVA] Thread 본문
스레드란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.
모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다.
또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.
프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있습니다.
쉽게 말해 프로세스를 공장이라고 생각하고 스레드를 일꾼이라고 생각하면 된다.
공장 하나에 일꾼은 많이 존재할 수 있다. 그렇게 생각하면 이해하기 쉽다.
스레드를 생성하는 방법에는 2가지가 있다.
1. Runnable 인터페이스를 구현하는 방법과
2. Thread 클래스를 상속받는 방법이 있다.
두 방법모두 run()을 오버 라이딩하면 된다.
차이점이라고는 인터페이스는 오버 라이딩을 강제한다는 것뿐이다.
예제를 보겠다.
public class Test01 {
public static void main(String[] args) {
Th1 th1 =new Th1();
Th2 th2 =new Th2();
Thread t3 = new Thread(th2);
th1.start();
t3.start();
for(int i=0; i<5; i++) {
System.out.println("메인"+i);
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
class Th1 extends Thread{
@Override
public void run() {
for(int i=1; i<=10; i++) {
System.out.println("클래스로 만든 스레드"+i);
}
}
}
class Th2 implements Runnable{
@Override
public void run() {
for(int i=1; i<=10; i++) {
System.out.println("인터페이스로 만든 스레드"+i);
}
}
}
Thread클래스를 상속받으면 인스턴스 화해서 바로 사용할 수 있지만
Runnable을 상속받으면 클래스를 상속받은 것이 아니기에 Thread로 인스턴스 화해 줘야 한다.
메서드 run()을 호출하는 것이 아니라
스레드는 start()를 호출해야 실행된다.
Comments