자바 기본 강좌의 상용 다중 루틴을 실현하는 두 가지 방식 자바 다중 루틴
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 인터페이스를 공유했다는 것을 설명한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 기본 튜토리얼 양보 자바 다중 튜토리얼1. yield() 소개 yield()의 역할은 양보입니다.이것은 현재 스레드가'실행 상태'에서'준비 상태'로 들어가서 같은 우선순위를 가진 다른 대기 스레드가 실행권을 얻도록 할 수 있다.단, 현재 스레드가 yie...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.