マルチスレッドを実装する 2 つの方法:
1. Threadクラスを継承する
public class MyThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if(i%2==0){
System.out.println("子线程-------------->"+i);
}
}
}
}
まず、Thread クラスを継承するクラスを定義し、run メソッドをオーバーライドします。
public class Test {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
for (int i = 0; i < 100; i++) {
if(i%2==0){
System.out.println("主线程---------->"+i);
}
}
}
}
テスト クラスでオブジェクトを作成し、start メソッドを呼び出し、メイン スレッドでプログラムを作成し、プログラムを実行して結果を確認してみましょう。
2つのプログラムの出力結果は交互に出力されており、マクロレベルで2つのプログラムが並行していることが分かる。
2. Runnableインターフェイスを実装する
public class RunThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if(i%2!=0){
System.out.println("子线程----------->"+ i);
}
}
}
}
まず、Runnable メソッドを実装し、run メソッドをオーバーライドするクラスを作成します。
public class Test {
public static void main(String[] args) {
Thread thread = new Thread(new RunThread());
thread.start();
for (int i = 0; i < 100; i++) {
if(i%2!=0){
System.out.println("主线程--------->"+i);
}
}
}
}
テスト クラスで Thread オブジェクトを作成し、start メソッドを呼び出すと、実行結果は次のようになります。
プログラムも同時に実行されており、Threadクラスを継承したのと同じ効果が得られることがわかります。
複雑なスレッド操作要件がある場合は Thread の継承を選択し、単にタスクを実行するだけの場合は runnable を実装します。