2013. 7. 29. 18:05

thread : 프로그램의 흐름

프로그램을 실행하면, main()메서드가  호출되어 하나의 흐름인 메인 스레드가 시작된다.


흐름이 하나밖에 없는 프로그램을 싱글 스레드.

Java에서는 흐름을 여러개 만들어 동시에 실행할 수 있는데 이처럼 흐름이 여러개 있는 프로그램을 멀티 스레드라 한다.





Thread를 생성하는 방법은 두가지가 있는데 runnable 인터페이스를 implements 하거나
Thread 클래스를 extends하는 방법이 있다

Thread 클래스
Java에서 멀티 스레드를 수행하기 위해서는 Thread클래스를 이용하여 새로운 스레드를 만들어줘야한다.
스레드를 만들기 위해서는 우선 Thread클래스를 상속받는 클래스를 작성하고 run()메소드를 오버라이딩 해준다.
그리고 그 안에 처리할 내용을 기술한다.



 class HelloThread extends Thread(){
public void run(){   // run 메소드 실행

}
}

스레드의 작성과 실행은 다음과 같이 한다.


HelloThread h = new HelloThread();
h.start();       // start()메소드 실행 시킨다

package thread;

public class tickTack extends Thread{
    private String word;
    private int time;
    private int count;
    
    public tickTack(String w, int t, int c) {
        word = w;
        time = t;
        count = c;
    }
    
    @Override
    public void run() {       // 스레드 클래스의 run 메소드를 오버라이딩한다.
        for (int i = 0; i < count; i++) {
            System.out.println(word);
            try {
                Thread.sleep(time);
            } catch (Exception e) {

            }
            
        }
    }

    
    public static void main(String[] args){
        tickTack tt = new tickTack("안녕", 1000, 4);   // 생성자를 사용해 호출,  안녕을 1000만큼 sleep, 4번 출력
        tickTack tt2 = new tickTack("Hello", 1000, 3); // 생성자를 사용해 호출,  Hello를 1000만큼 sleep, 3번 출력
        tickTack tt3 = new tickTack("하이", 1000, 3);  // 생성자를 사용해 호출,  하이를 1000만큼 sleep, 3번 출력
        
        tt.start();
        try {
            Thread.sleep(500);        // 0.5 지연
        } catch (Exception e) {
            // TODO: handle exception
        }
        tt2.start();
        try {
            Thread.sleep(500);        // 0.5 지연
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        tt3.start();
        
    }
    
    
}



안녕

Hello
하이
안녕
Hello
하이
안녕
Hello
하이

안녕

 

'java' 카테고리의 다른 글

Iterator  (0) 2013.07.29
Properties  (0) 2013.07.26
Arrays  (0) 2013.07.25
File  (0) 2013.07.25
Class  (0) 2013.07.25
Posted by 1+1은?