Javaマルチスレッド(一)スレッドの作成

2275 ワード

Javaでスレッドを作成する方法は2つあります
①Threadクラス書き換えrun()メソッドの継承
/**
 * Created by hewenhao on 2020/5/12
 * Description        -:  Thread ,  run()  
 */
public class ExtendsThread extends Thread{

    @Override
    public void run() {
        System.out.println("  id:" + Thread.currentThread().getId() + ",   :" + Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        System.out.println(String.format("   id:%s,    :%s", Thread.currentThread().getId(), Thread.currentThread().getName()));
        ExtendsThread thread1 = new ExtendsThread();
        thread1.start();
        ExtendsThread thread2 = new ExtendsThread();
        thread2.run();
    }
}

実行結果:
   id:1,    :main
  id:1,   :main
  id:9,   :Thread-0

Process finished with exit code 0

結果から、
スレッドの起動には、スレッドクラスのstart()メソッドを呼び出し、スレッドを実行可能な状態にする必要があります.スレッドクラスのrun()メソッドは一般的なメソッドであり、単独で呼び出すと新規スレッドは発生しません.2つのスレッドの実行結果から、新しいスレッドはメインスレッドの実行をブロックしません.
②Runnableインタフェース実装run()メソッド
/**
 * Created by hewenhao on 2020/5/12
 * Description        -:  Runnable  ,  run()  
 */
public class ImplementRunnable implements Runnable{

    @Override
    public void run() {
        System.out.println(String.format("  id:%s,   :%s", Thread.currentThread().getId(), Thread.currentThread().getName()));
    }

    public static void main(String[] args) {
        System.out.println(String.format("   id:%s,    :%s", Thread.currentThread().getId(), Thread.currentThread().getName()));
        Thread thread1 = new Thread(new ImplementRunnable());
        thread1.start();
        Thread thread2 = new Thread(new ImplementRunnable());
        thread2.run();
    }
}

実行結果:
   id:1,    :main
  id:1,   :main
  id:9,   :Thread-0

Process finished with exit code 0

runnableインタフェースを実現するrun()メソッドは、新しいスレッドにはnewのThreadクラスが必要であり、Threadクラスの構築メソッドによって新しいスレッドが作成されます.
public Thread(Runnable target) {
        init(null, target, "Thread-" + nextThreadNum(), 0);
    }

両方のスレッドの作成方法は使用できますが、インタフェースを使用して実装するとjava単一継承の問題を回避でき、親クラスを継承すると同時にマルチスレッドの機能を実現できます.
テキストリンク:http://www.cnblogs.com/dolphin0520/p/3913517.html