Java では単一の継承のみが許可されていますが、複数のインターフェースの実装が許可されているため、2 番目の方法の方が柔軟です。
次のようにコードをコピーします。
/**
* java.lang.Thread クラス定義から継承したスレッドを実行します
*/
public void startOne() {
//インスタンスを作成する
OneThread oneThread = new OneThread();
// スレッド ThreadA を開始
oneThread.startThreadA();
試す {
// スレッドを 1 秒間スリープするように設定します
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// スレッドを停止します。ここでは stop() メソッドを使用しないのはなぜですか。このメソッドは廃止されましたが、デッドロックで使用できるからです。
oneThread.stopThreadA();
}
次のようにコードをコピーします。
/**
* Runnableインターフェイス定義を実装するスレッドを実行します
*/
public void startTwo() {
//インスタンスを作成する
実行可能 runnable = new TwoThread();
// インスタンスをスレッドに入れます
スレッド threadB = 新しいスレッド (実行可能);
// スレッドの開始
threadB.start();
}
次のようにコードをコピーします。
// Thread クラスを継承してスレッドを定義します
class OneThread extends Thread {
プライベートブール値実行 = false;
public void start() {
this.running = true;
super.start();
}
public void run() {
int i = 0;
試す {
(実行中) {
System.out.println("Thread クラスを継承してスレッド プログラム本体を定義します..." + i++);
Thread.sleep(200);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void startThreadA() {
System.out.println("Threadクラスを継承して定義したスレッドを開始する");
this.start();
}
public void stopThreadA() {
System.out.println("継承した Thread クラスによって定義されたスレッドを閉じる");
this.running = false;
}
}
次のようにコードをコピーします。
// Runnable インターフェイスを実装してスレッドを定義します
クラス TwoThread は Runnable {を実装します
プライベート日付 runDate;
public void run() {
System.out.println("スレッド プログラム本体を定義するために Runnable インターフェイスを実装します...");
this.runDate = 新しい日付();
System.out.println("スレッドの起動時間..." + runDate);
}
次のようにコードをコピーします。
public static void main(String[] args) {
//オブジェクトをインスタンス化する
ThreadStartAndStop threadStartAndStop = new ThreadStartAndStop();
threadStartAndStop.startOne();
threadStartAndStop.startTwo();
}
継承開始 Thread クラス定義 スレッド継承 Thread クラス定義 スレッド プログラム本体... 0
Thread クラスを継承してスレッド プログラム本体を定義します...1
Thread クラスを継承してスレッド プログラム本体を定義します...2
Thread クラスを継承してスレッド プログラム本体を定義します...3
Thread クラスを継承してスレッド プログラム本体を定義します...4
継承した Thread クラスを閉じ、スレッドを定義し、Runnable インターフェイスを実装し、スレッド プログラム本体を定義します。
スレッド開始時間...金曜日 3 月 15 日 12:56:57 CST 2013