콘텐츠로 건너뛰기

자바의 스레드(Thread)사용

예전에 화현님이 쓰셨던 “스레드를 이용한 병렬처리 프로그래밍”이란 글을 읽을 당시에만 해도 스레드에 대한 개념을 전혀 모르고 있던 저 였습니다.

전공수업으로 ‘자바를 이용한 채팅프로그램 만들기’를 배우면서 스레드를 사용하게 되고 개념을 잡을 수 있었는데요. 제 블로그에 한번 살짝 정리 해 보려 합니다.

스레드는 한 마디로 프로그램 하나에서 여러개의 내부 프로그램들이 동시에 처리되는 것을 말합니다. 더욱 간단하게 풀어 보자면 윈도우XP에서 Windows 작업관리자의 응용프로그램 탭을 살펴보면 여러개의 프로세스가 동시에 실행이 되고 있는 것이 보일 겁니다. 윈도우XP라는 프로그램 안에서 프로세스라는 여러개의 스레드가 동시에 실행 되고 있다라고 생각하면 좀 이해가 쉬우려나요??

실도 스레드라고 한다
실도 스레드라고 한다

동시에 실행되고 있다고 적긴 했으나 실제로는 동시에 실행되는 것은 아니고 아주 빠른 속도로 스레드가 번갈아 가면서 실행되고 있기 때문에 사람들이 느끼기엔 동시에 작동하는 것 처럼 느껴지는 것이겠죠^^ 화현님의 블로그에 멀티코어 환경에서의 실험에서의 결과는 하나의 CPU자원을 여러개의 스레드가 나누어서 실행되는 것이 아니라 각각의 CPU자원을 각각의 스레드가 가지고 있어도 되기 때문에 나타난 결과가 아닌가 생각됩니다.

자바에서 스레드에 대한 간단한 정리입니다.

자바에서의 스레드란 메서드 입니다. 두 개 이상의 메서드를 동시해 실행하는 기술이 바로 스레드이지요. 위에서 예로 들었던 윈도우XP의 여러개의 프로세스 실행은 엄연히 따지면 스레드 보다는 멀티 태스킹입니다. 다만 이해를 돕기 위해 예를 든것인데요. 스레드는 프로그램단위의 멀티태스킹이 아닌 하나의 프로세스 안에서 여러개의 스레드가 동시에 작업을 하고 있는 것 입니다.

스레드가 될 클래스는 클래스 안에 public void run()이란 메서드가 존재해야 합니다. 바로 RUN()이란 메서드가 스레드가 실행될 때 작동되는 메서드이기 때문이죠.
스레드를 작동시키는 방법은

클래스이름.start();

간단하죠??

스레드를 만드는 두 가지 방법

RUNABLE로 스레드 만들기.

class T implements Runable {
    public void run() {
        //스레드 작업 내용
    }
}

public class ThreadMain {
    public static void main(Stringp[] args) {
        T t = new T();
        Thread thread = new Thread(t);    //t에 Runable를 장착해서 스레드 만들기
        thread.start();   //스레드 실행
    }
}

클래스에 스래드 클래스를 상속받아 사용하는 것.

class T extends Thread {
    public void run() {
        //스레드 작업 내용
    }
}

public class 스레드 메인 {
    public static void main(String[] args) {
        T t = new T();
        t.start();   //스레드 실행
    }
}

    스레드를 이용하면 좀 더 다양하고 재미있는 프로그램을 만드는데 도움이 되겠죠??

    아마 도움이 될 겁니다^^ㅋ


    2 개의 댓글

    답글 남기기

    이메일 주소는 공개되지 않습니다. Required fields are marked *