자바 가 하위 스 레 드 를 만 드 는 두 가지 방법

요약:
사실 두 가지 방법 을 종합해 보면 하나 인지 모두 Thread 의 구조 기 를 이용 하여 만 든 것 이다.차이 점 은 하 나 는 인삼 이 없 는 것 이 고 하 나 는 인삼 이 있 는 것 이다.
1.Thread 스 레 드 클래스 계승:
Thread 클래스 를 계승 하여 run 방법 을 다시 쓰 면 하위 클래스 대상 은 start 방법 으로 스 레 드 를 시작 할 수 있 고 JVM 은 이 스 레 드 의 run 방법 을 호출 합 니 다.
코드 는 다음 과 같 습 니 다:

public class MyThread extends Thread {
  public MyThread() { 
    super(); 
  }
    @Override
    public void run() { 
  }
    //       
    System.out.println("    ! " + getName());
  }
}

public class HelloWorld {
public static void main(String[] args) {
  //     t1
  Thread t1 = new MyThread(); ①
  //     t1
  t1.start();
}
}
메모:run 방법 을 직접 호출 하면 프로그램 은 주 스 레 드 라 는 스 레 드 만 순서대로 실행 합 니 다.스 레 드 를 만 들 지 않 습 니 다.

public class HelloWorld {
public static void main(String[] args) {
  //     t1
  Thread t1 = new MyThread(); ①
  //     t1
  t1.run();
}
}
2.Runnable 인터페이스 구현:
Thread 클래스 가 Runnable 인 터 페 이 스 를 실현 하기 때문에 우 리 는 Runnable 을 직접 실현 한 다음 에 Thread(Runnable target)를 통 해 스 레 드 를 만 들 수 있 습 니 다.

//      
public class Runner implements Runnable { 
    //         
    @Override
    public void run() { 
    }
    //       
    System.out.println("    ! " + Thread.currentThread().getName());
  }
}

public class HelloWorld {
  public static void main(String[] args) {
    //     t1,           Runner
    Thread t1 = new Thread(new Runner()); 
    //     t1
    t1.start(); 
  }
}
메모:(1)Runnable 인 터 페 이 스 를 실현 하면 Thread 류 를 호출 할 수 없 지만 Thread.currentThread()를 통 해 호출 할 수 있 습 니 다.
(2)궁금 한 사람 이 있 을 수 있 습 니 다.thread.start();Thread 류 의 run 방법 이 아 닌 Runnable 류 를 실현 하 는 run 방법 을 왜 호출 합 니까?이것 은 바로 소스 코드 에서 분석 해 야 한다.

//Thread run  ,  target.run()
public void run() {
    if (target != null) {
      target.run();
    }
 }
 //Thread    
public Thread(Runnable target) {
    init(null, target, "Thread-" + nextThreadNum(), 0);
}
Thread 류 의 구조 기 는 init 방법 을 호출 합 니 다.과거 에 보 낸 Runnable 대상 을 Thread 류 의 target 에 할당 합 니 다.그래서 target.run()은 우리 가 Runnable 류 를 실현 하고 다시 쓰 는 run 방법 을 호출 합 니 다.
private Runnable target;
2.스 레 드 를 만 드 는 두 가지 방법 을 비교 합 니 다.
개발 중:우선 선택,Runnable 인터페이스 구현 방식
원인:(1)실현 방식 은 단일 상속 의 한계 가 없다.
(2)여러 스 레 드 가 데 이 터 를 공유 하 는 상황 을 처리 하 는 데 더욱 적합 하 다.
연락처:Thread 가 Runnable 을 실 현 했 습 니 다.
공통점:둘 다 run()을 다시 써 야 합 니 다.
결론:두 가지 방법 은 각각 좋 고 나 쁨 이 있 습 니 다.이른바 무 와 채 소 는 각자 좋아 하 는 것 이 있 습 니 다.자신의 취향 을 제외 하고 실제 응용 장면 을 잊 지 마 세 요.(◔◡◔)
자바 가 하위 스 레 드 를 만 드 는 두 가지 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 가 하위 스 레 드 를 만 드 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 저 희 를 많이 사랑 해 주세요!

좋은 웹페이지 즐겨찾기