자바 기본 강좌의 상용 다중 루틴을 실현하는 두 가지 방식 자바 다중 루틴

스레드 탱크의 내용에 대해 우리는 이후에 상세하게 소개할 것이다.이제 Thread와 Runnable에 대해 알아보겠습니다.이 장의 내용은 Thread와 Runnable의 프로필인 Thread와 Runnable의 공통점인 Thread와 Runnable의 다중 스레드의 예시를 포함한다.
Thread와 Runnable 소개 Runnable는 하나의 인터페이스로 run() 방법만 포함되어 있습니다.그것의 정의는 다음과 같다

public interface Runnable {
    public abstract void run();
}
Runnable의 역할로 다중 스레드를 실현합니다.우리는 클래스 A를 정의하여 Runnable 인터페이스를 실현할 수 있다.그리고 new Thread(new A() 등을 통해 라인을 새로 만듭니다.
Thread는 클래스입니다.Thread 자체가 Runnable 인터페이스를 구현했습니다.다음과 같이 선언합니다.
public class Thread implements Runnable {}Thread의 작용으로 다중 스레드를 실현합니다.
Thread와 Runnable의 공통점과 차이점인 Thread와 Runnable의 공통점은 다선정의 실현 방식이다.Thread와 Runnable의 차이점: Thread는 클래스이고 Runnable는 인터페이스입니다.Thread 자체는 Runnable 인터페이스를 구현한 클래스입니다.'하나의 클래스는 하나의 부류만 있을 수 있지만 여러 개의 인터페이스를 실현할 수 있다'는 것을 알고 있기 때문에 런블은 더욱 좋은 확장성을 가지고 있다.또한 Runnable은 리소스 공유에도 사용할 수 있습니다.즉, 여러 개의 스레드는 하나의 Runnable 대상을 바탕으로 만들어져 Runnable 대상의 자원을 공유한다.일반적으로, "Runnable"을 통해 다중 스레드를 실현하는 것을 권장합니다!
Thread 및 Runnable의 다중 스레드 예제 1.Thread의 다중 스레드 예
다음은 예시를 통해 Thread와 Runnable를 더욱 잘 이해하고 인터넷의 한 예를 참고하여 비교적 설득적인 예를 제시한다.

 // ThreadTest.java
class MyThread extends Thread{ 
    private int ticket=10; 
    public void run(){
        for(int i=0;i<20;i++){
            if(this.ticket>0){
                System.out.println(this.getName()+" :ticket"+this.ticket--);
            }
        }
    }
};

public class ThreadTest { 
    public static void main(String[] args) { 
        // 3 t1,t2,t3; 10 !
        MyThread t1=new MyThread();
        MyThread t2=new MyThread();
        MyThread t3=new MyThread();
        t1.start();
        t2.start();
        t3.start();
    } 
}
 

실행 결과:

Thread-0 :ticket10
Thread-1 :ticket10
Thread-2 :ticket10
Thread-1 :ticket9
Thread-0 :ticket9
Thread-1 :ticket8
Thread-2 :ticket9
Thread-1 :ticket7
Thread-0 :ticket8
Thread-1 :ticket6
Thread-2 :ticket8
Thread-1 :ticket5
Thread-0 :ticket7
Thread-1 :ticket4
Thread-2 :ticket7
Thread-1 :ticket3
Thread-0 :ticket6
Thread-1 :ticket2
Thread-2 :ticket6
결과 설명: (01) MyThread는 Thread에서 상속되며 사용자 정의 스레드입니다.MyThread마다 10장씩 팔립니다.(02) 주 스레드 main에서 MyThread 하위 스레드 3개를 생성하고 시작합니다.각 하위 노선마다 각각 10장의 표를 팔았다.
 
2. Runnable의 다중 스레드 예
아래, 우리는 위의 프로그램을 수정한다.Runnable을 통해 하나의 인터페이스를 실현하여 다중 스레드를 실현한다.

// RunnableTest.java
class MyThread implements Runnable{ 
    private int ticket=10; 
    public void run(){
        for(int i=0;i<20;i++){
            if(this.ticket>0){
                System.out.println(Thread.currentThread().getName()+" :ticket"+this.ticket--);
            }
        }
    }
};

public class RunnableTest { 
    public static void main(String[] args) { 
        MyThread mt=new MyThread();

        // 3 t1,t2,t3( Runnable ), 3 10 !
        Thread t1=new Thread(mt);
        Thread t2=new Thread(mt);
        Thread t3=new Thread(mt);
        t1.start();
        t2.start();
        t3.start();
    } 
}

실행 결과:

Thread-0 :ticket10
Thread-2 :ticket8
Thread-1 :ticket9
Thread-2 :ticket6
Thread-0 :ticket7
Thread-2 :ticket4
Thread-1 :ticket5
Thread-2 :ticket2
Thread-0 :ticket3
Thread-1 :ticket1
결과 설명: (01) 위의 "MyThread는 Thread에서 상속됩니다"와 다릅니다.여기서 MyThread는 Thread 인터페이스를 구현합니다.(02) 주 스레드 main은 세 개의 하위 스레드를 만들고 시작합니다. 그리고 이 세 개의 하위 스레드는 모두 "mt라는 Runnable 대상"을 기반으로 만듭니다.운행 결과 이 세 개의 라인이 모두 10장의 표를 팔았다.이것은 그들이 MyThread 인터페이스를 공유했다는 것을 설명한다.

좋은 웹페이지 즐겨찾기