자바 Thread 사용법
Thread(스레드)를 이해하기 위해서는 우선 프로세스를 알아야 한다. 프로세스는 하나의 프로그램이라고 보면 된다. 우리는 윈도우에서 음악을 들으며 웹서핑을 할 수 있다. 음악을 플레이 하는 프로그램도 있고 웹서핑을 할 수 있도록 브라우져 프로그램을 실행한다. 이 둘은 각각의 프로세스이다.
윈도우는 멀티프로세스 기반 OS이며 각각의 두 프로그램을 적절한 CPU 분배로 마치 동시에 실행 되는 것과 같다. 스레드는 하나의 프로세스 안에 독립적으로 수행되는 흐름이라고 보면된다. OS 안에 여러 프로세스가 존재하듯이 프로세스 안에는 1개 이상의 스레드가 존재하며 각각의 독립적 기능을 한다.
스레스 사용 방법
자바에스 스레드를 사용하는 방법은 2가지로 나눌 수 있다.
Thread 클래스나 Runnable 인터페이스를 상속 받아 사용할 수 있다.
아래 예제는 상속 받는 방법과 스레드를 생성하는 방법에 대한 예제가 있다.
각각 사용 방법이 다르니 주의해서 보도록 한다.
[Thread를 상속 받은 스레드 클래스]
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread 상속");
}
public static void main(String[] args) {
Thread mt = new MyThread();
mt.start();
}
} |
[상속 방법]
public class MyThread extends Thread // Thread 클래스를 상속 받기 때문에 extends 를 사용한다. |
[사용 방법]
Thread mt = new MyThread();
mt.start(); // 스레드를 시작하는 함수 |
[Runnable를 상속 받은 스레드 클래스]
public class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("Runnable 상속");
}
public static void main(String[] args) {
Thread mr = new Thread(new MyRunnable());
mr.start();
}
} |
[상속 방법]
public class MyThread implements Runnable // Runnable 인터페이스를 상속 받기 때문에 implements 를 사용한다. |
[사용 방법]
Thread mr = new Thread(new MyRunnable()); // Runnable은 Thread의 자식이 아니기 때문에 바로 생성 할 수 없고 이렇게 Thread 객체 생성시 인자로 넣어준다.
mr.start(); // 스레드를 시작하는 함수 |
|