나중에 스레드 풀의 내용을 자세히 소개합니다. 이 장의 내용에는 다음이 포함됩니다.
스레드 및 실행 가능에 대한 소개
스레드와 실행 가능한 유사점과 차이점
스레드 및 실행 가능에 대한 멀티 스레딩의 예
스레드 및 실행 가능에 대한 소개
runnable은 하나의 run () 메소드 만 포함하는 인터페이스입니다. 그 정의는 다음과 같습니다.
코드 사본은 다음과 같습니다.
공개 인터페이스 실행 가능 {
공개 초록 void run ();
}
런닝 가능한 역할은 멀티 스레딩을 구현합니다. 클래스 A를 정의하여 런닝 가능한 인터페이스를 구현 한 다음 새 스레드 (새 a ()) 및 기타 메소드를 통해 새 스레드를 만듭니다.
스레드는 수업입니다. 스레드 자체는 실행 가능한 인터페이스를 구현합니다. 그 진술은 다음과 같습니다.
공개 클래스 스레드는 실행 가능 {}를 구현합니다.
스레드의 역할은 멀티 스레딩을 실현하는 것입니다.
스레드와 실행 가능한 유사점과 차이점
스레드와 실행 가능의 유사성 : 둘 다 "다중 스레드 구현"입니다.
스레드와 실행 가능의 차이점 :
스레드는 클래스이며, 런닝 가능한 스레드 자체는 런닝 가능한 인터페이스를 구현하는 클래스입니다. 우리는 "클래스는 하나의 부모 클래스 만 가질 수 있지만 여러 인터페이스를 구현할 수 있습니다"라는 것을 알고 있으므로 Runnable은 확장 성이 향상됩니다.
또한 Runnable은 "자원 공유"에도 사용될 수 있습니다. 즉, 여러 스레드가 특정 실행 가능한 객체를 기반으로 생성되며 런닝 가능한 객체에 대한 리소스를 공유합니다.
일반적으로 "Runnable"을 통해 멀티 스레딩을 구현하는 것이 좋습니다!
스레드 및 실행 가능에 대한 멀티 스레딩 예제
1. 스레드의 멀티 스레딩 예
아래에서는 예제를 통해 스레드와 실행 가능한 스레드를 더 잘 이해하고 더 설득력있는 온라인 예제를 그릴 수 있습니다.
코드 사본은 다음과 같습니다.
// ThreadTest.java 소스 코드
클래스 Mythread는 스레드를 확장합니다 {
개인 int 티켓 = 10;
public void run () {
for (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (this.getName ()+"티켓 판매 : 티켓"+this.ticket-);
}
}
}
};
공개 클래스 스레드 테스트 {
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 ();
}
}
실행 결과 :
코드 사본은 다음과 같습니다.
스레드 -0 티켓 판매 : 티켓 10
스레드 1 티켓 판매 : Ticket10
스레드 -2 티켓 판매 : Ticket10
스레드 1 티켓 판매 : 티켓 9
스레드 -0 티켓 판매 : 티켓 9
스레드 1 티켓 판매 : 티켓 8
스레드 -2 티켓 판매 : 티켓 9
스레드 1 티켓 판매 : 티켓 7
스레드 -0 티켓 판매 : 티켓 8
스레드 1 티켓 판매 : 티켓 6
스레드 -2 티켓 판매 : 티켓 8
스레드 1 티켓 판매 : 티켓 5
스레드 -0 티켓 판매 : 티켓 7
스레드 1 티켓 : 티켓 4
스레드 -2 티켓 판매 : 티켓 7
스레드 1 티켓 판매 : 티켓 3
스레드 -0 티켓 판매 : 티켓 6
스레드 1 티켓 판매 : 티켓 2
스레드 -2 티켓 판매 : 티켓 6
결과 설명 :
(01) Mythread는 스레드에서 상속됩니다. 이것은 사용자 정의 스레드입니다. 각 신화는 10 개의 티켓을 판매합니다.
(02) 메인 스레드 메인은 3 개의 신화 자식 스레드를 생성하고 시작합니다. 각 어린이 스레드는 10 개의 티켓을 판매합니다.
2. 런 가능의 다중 스레드 예제
다음으로 위의 프로그램을 수정합니다. Runnable을 통해 인터페이스를 구현하여 멀티 스레딩을 구현합니다.
코드 사본은 다음과 같습니다.
// runnableTest.java 소스 코드
클래스 신화는 실행 가능한 {
개인 int 티켓 = 10;
public void run () {
for (int i = 0; i <20; i ++) {
if (this.ticket> 0) {
System.out.println (Thread.currentThread (). getName ()+"티켓 판매 : 티켓"+this.ticket-);
}
}
}
};
공개 클래스 runnabletest {
public static void main (String [] args) {
신화 mt = new Mythread ();
// 3 개의 스레드 T1, T2, T3 (런닝 가능한 객체를 공유)을 시작하면이 3 개의 스레드는 총 10 개의 티켓을 판매합니다!
스레드 T1 = 새 스레드 (MT);
스레드 T2 = 새 스레드 (MT);
스레드 T3 = 새로운 스레드 (MT);
t1.start ();
t2.start ();
t3.start ();
}
}
실행 결과 :
코드 사본은 다음과 같습니다.
스레드 -0 티켓 판매 : 티켓 10
스레드 -2 티켓 판매 : 티켓 8
스레드 1 티켓 판매 : 티켓 9
스레드 -2 티켓 판매 : 티켓 6
스레드 -0 티켓 판매 : 티켓 7
스레드 2 티켓 : 티켓 4
스레드 1 티켓 판매 : 티켓 5
스레드 2 티켓 : 티켓 2
스레드 -0 티켓 판매 : 티켓 3
스레드 1 티켓 : 티켓 1
결과 설명 :
(01) 위의 "스레드에서 나온 신화 상속"과 달리, 여기서는 스레드 인터페이스를 구현합니다.
(02) 메인 스레드 메인은 3 개의 자식 스레드를 생성하고 시작 하며이 3 개의 자식 스레드는 모두 "MT, Runnable Object"를 기반으로 생성됩니다. 수술의 결과는이 3 개의 아동 스레드가 총 10 개의 티켓을 판매했다는 것입니다. 이것은 그들이 신화 인터페이스를 공유한다는 것을 의미합니다.