자바 가 하위 스 레 드 를 만 드 는 두 가지 방법
사실 두 가지 방법 을 종합해 보면 하나 인지 모두 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()을 다시 써 야 합 니 다.
결론:두 가지 방법 은 각각 좋 고 나 쁨 이 있 습 니 다.이른바 무 와 채 소 는 각자 좋아 하 는 것 이 있 습 니 다.자신의 취향 을 제외 하고 실제 응용 장면 을 잊 지 마 세 요.(◔◡◔)
자바 가 하위 스 레 드 를 만 드 는 두 가지 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 가 하위 스 레 드 를 만 드 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 저 희 를 많이 사랑 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.