Java에서는 단일 상속만 허용되지만 다중 인터페이스 구현이 허용되므로 두 번째 방법이 더 유연합니다.
다음과 같이 코드 코드를 복사합니다 .
/**
* java.lang.Thread 클래스 정의에서 상속된 스레드를 실행합니다.
*/
공공 무효 startOne() {
//인스턴스 생성
OneThread oneThread = 새로운 OneThread();
//스레드 ThreadA 시작
oneThread.startThreadA();
노력하다 {
//스레드를 1초 동안 휴면 상태로 설정
Thread.sleep(1000);
} 잡기(InterruptedException e) {
e.printStackTrace();
}
// 스레드를 중지합니다. 여기서는 stop() 메서드를 사용하는 것이 좋습니다. 이 메서드는 폐기되었지만 교착 상태에서 사용할 수 있기 때문입니다.
oneThread.stopThreadA();
}
다음과 같이 코드 코드를 복사합니다 .
/**
* Runnable 인터페이스 정의를 구현하는 스레드를 실행합니다.
*/
공공 무효 startTwo() {
//인스턴스 생성
실행 가능 runnable = new TwoThread();
//인스턴스를 스레드에 넣습니다.
스레드 threadB = 새 스레드(실행 가능);
//스레드 시작
threadB.start();
}
다음과 같이 코드 코드를 복사합니다 .
//Thread 클래스를 상속받아 스레드를 정의합니다.
OneThread 클래스는 Thread {를 확장합니다.
개인 부울 실행 = false;
공개 무효 시작() {
this.running = true;
슈퍼.시작();
}
공개 무효 실행() {
int i = 0;
노력하다 {
(실행 중) {
System.out.println("스레드 프로그램 본문을 정의하기 위해 Thread 클래스를 상속합니다..." + i++);
Thread.sleep(200);
}
} 잡기(InterruptedException e) {
e.printStackTrace();
}
}
공공 무효 startThreadA() {
System.out.println("Thread 클래스를 상속받아 정의된 스레드를 시작합니다.");
this.start();
}
공공 무효 stopThreadA() {
System.out.println("상속된 Thread 클래스에 의해 정의된 스레드를 닫습니다.");
this.running = 거짓;
}
}
다음과 같이 코드 코드를 복사합니다 .
// 스레드를 정의하기 위해 Runnable 인터페이스를 구현합니다.
클래스 TwoThread는 Runnable을 구현합니다.
비공개 날짜 runDate;
공개 무효 실행() {
System.out.println("스레드 프로그램 본문을 정의하기 위해 Runnable 인터페이스를 구현합니다...");
this.runDate = 새로운 날짜();
System.out.println("스레드 시작 시간..." + runDate);
}
다음과 같이 코드 코드를 복사합니다 .
공개 정적 무효 메인(String[] args) {
//객체 인스턴스화
ThreadStartAndStop threadStartAndStop = new ThreadStartAndStop();
threadStartAndStop.startOne();
threadStartAndStop.startTwo();
}
스레드 클래스 정의 스레드 상속 스레드 클래스 정의 스레드 프로그램 본문 상속 시작... 0
Thread 클래스를 상속받아 스레드 프로그램 본문을 정의합니다...1
Thread 클래스를 상속받아 스레드 프로그램 본문을 정의합니다...2
Thread 클래스를 상속받아 스레드 프로그램 본문을 정의합니다...3
Thread 클래스를 상속받아 스레드 프로그램 본문을 정의합니다...4
상속받은 Thread 클래스를 닫고, 스레드를 정의하고, Runnable 인터페이스를 구현하고, 스레드 프로그램 본문을 정의합니다...
스레드 시작 시간...2013년 3월 15일 금요일 12:56:57 CST