Thread 클래스(자바 다 중 스 레 드 작업 의 Thread 클래스,소스 코드 분석)

JAVA 다 중 스 레 드 실현 방식 은 주로 세 가지 가 있 습 니 다.
    1,  Thread ;
    2,  Runnable  ;
    3,  ExecutorService、Callable、Future          。

그 중에서 앞의 두 가지 방식 은 스 레 드 가 실 행 된 후에 반환 값 이 없고 가장 큰 것 은 실 행 된 후에 반환 값 이 있 습 니 다.
4.567917.Thread 류 를 계승 하여 다 중 스 레 드 계승 Thread 류 를 실현 하 는 것 은 본질 적 으로 Runnable 인터페이스 의 인 스 턴 스 를 실현 하 는 것 입 니 다.이것 은 하나의 스 레 드 의 인 스 턴 스 를 대표 하고 스 레 드 를 시작 하 는 유일한 방법 은 Thread 류 의 start()인 스 턴 스 방법 입 니 다.Start()방법 은 native 방법 으로 새로운 스 레 드 를 시작 하고 run()방법 을 실행 합 니 다.이러한 방식 은 다 중 스 레 드 를 실현 하 는 것 이 비교적 간단 하 다.자신의 클래스 를 통 해 직접 extend Threa 를 통 해 run()방법 을 복사 하면 새로운 스 레 드 를 시작 하고 자신 이 정의 한 run()방법 을 실행 할 수 있다.다음 과 같 습 니 다.Thread 류 를 계승 하여 두 스 레 드 의 집행 을 실현 합 니 다
class SimpleThread extends Thread {
    public SimpleThread(String str) {
        super(str);
    }
    public void run() {
        for (int i = 0; i < 10; i++) {
           System.out.println(i + "" + getName());
            try {
                sleep((int)(Math.random() * 1000));
            } catch (InterruptedException e) {}
        }
        System.out.println("DONE! " + getName());
    }
}

main 방법 에서 실 행 된 코드:
public class TwoThreadsTest {
    public static void main (String[] args) {   
        new SimpleThread("Go to Beijing??").start();
        new SimpleThread("Stay here!!").start();      
    }
}

두 스 레 드 가 교체 되 어 실 행 된 콘 솔 결과:
0Stay here!!
0Go to Beijing??
1Go to Beijing??
1Stay here!!
2Go to Beijing??
3Go to Beijing??
2Stay here!!
3Stay here!!
4Go to Beijing??
4Stay here!!
5Go to Beijing??
6Go to Beijing??
5Stay here!!
6Stay here!!
7Stay here!!
7Go to Beijing??
8Go to Beijing??
8Stay here!!
9Go to Beijing??
DONE! Go to Beijing??
9Stay here!!
DONE! Stay here!!

분석:두 스 레 드 의 실행 순 서 를 통 해 알 수 있 듯 이 그들 은 실행 하 는 과정 에서 양보 하 는 순서에 따라 순서대로 집행 하지 않 았 다.한 스 레 드 가 실 행 된 후에 이 스 레 드 를 제외 한 스 레 드 가 아니 라 현재 스 레 드 가 계속 실 행 될 수 있다.이것 은 다 중 스 레 드 가 실 행 될 때 동시 실행 에 속 하기 때문에 모든 스 레 드 는 CPU 의 한 시간 대 를 차지 하고 시간 대가 실행 되 지 않 으 면 다른 스 레 드 를 실행 하지 않 습 니 다.시간 대 를 실행 한 후에 첫 번 째 스 레 드 의 실행 을 복원 합 니 다.
코드 설명:여기 서 거 리 는 두 스 레 드 간 의 출력 관 계 를 설명 합 니 다.여러 스 레 드 가 나타 날 때 여러 스 레 드 를 정리 하고 여러 스 레 드 간 에 분 배 된 시간 내 에 스 레 드 를 실행 하 며 시간 대가 끝나 면 자동 으로 CPU 를 양보 하고 다른 스 레 드 를 실행 하도록 합 니 다.

좋은 웹페이지 즐겨찾기