0. 개요



스레드 개념은 아래 링크를 참고하세요.


http://gsgdvxhx.tistory.com/7






1. 스레드 구현하기



자바로 스레드를 만드는 방법은 두가지가 있습니다.


1. Thread 클래스 사용


2. Runnable 인터페이스 사용





1.1. Thread 클래스 사용



스레드는 Thread클래스를 상속받아 구현할 수 있습니다. 단, 자바는 다중상속을 지원하지 않으므로 다른 클래스를 상속 받을 수 없다는 특징이 있습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class myThread extends Thread{
    
    String myName;
 
    myThread(String myName){
        this.myName = myName;
    }
 
    public static void main(String[] args)
    {
        myThread a = new myThread("첫번째");
        myThread b = new myThread("두번째");
 
        a.start();
        b.start();
    }
 
    @Override
    public void run(){
        for(int i = 0; i < 10; i++){
            try{
                System.out.println(myName + " : " + i);
                Thread.sleep(100);
            }catch(Exception e){e.printStackTrace();}
        }
    }
 
}
cs



1번째 줄 :  myThread 클래스는 Thread를 상속받습니다.


14., 15 번째 줄 : 오버라이딩 된 run함수를 수행 합니다.


19번째 줄 : run함수를 오버라이딩합니다.



start()는 run()을 동작시킵니다. start()를 직접 구현하지 않았지만 Thread를 상속받았기 때문에 start()를 호출하면 run()이 호출됩니다.

start()는 스레드를 실행시키기 전의 환경설정등의 기능을 수행하므로 run()을 호출해서 사용하면 안되고 start()를 사용하여 간접적으로 실행해야 합니다.








1.2. Runnable 인터페이스 구현하여 실행



Runnable 인터페이스를 이용하여 스레드 구현이 가능합니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class myRunnable implements Runnable{
    
    String myName;
 
    myRunnable(String myName){
        this.myName = myName;
    }
 
    public static void main(String[] args)
    {
        myRunnable a = new myRunnable("첫번째");
        myRunnable b = new myRunnable("두번째");
 
        Thread th1 = new Thread(a);
        Thread th2 = new Thread(b);
 
        th1.start();
        th2.start();
    }
 
    @Override
    public void run(){
        for(int i = 0; i < 10; i++){
            try{
                System.out.println(myName + " : " + i);
                Thread.sleep(100);
            }catch(Exception e){e.printStackTrace();}
        }
    }
 
cs





두 예제의 결과는 같습니다.









+ Recent posts