Javaマルチスレッドプログラミング(1)-ThreadとRunnable


1.概念とサンプルコード
    プロセスは、メモリで実行されるアプリケーションであり、オペレーティングシステムがリソースを割り当てる最小単位です.
   スレッドはプロセスの実行プロセスであり、プロセスは複数のスレッドを実行することができ、スレッドは常にプロセスに属し、プロセス内の複数のスレッドはプロセス内のメモリリソースを共有します.
   タスクをより効率的に完了し、CPUリソースを利用するためには、マルチスレッド操作が必要であるため、マルチスレッドプログラミングが必要である.Javaマルチスレッドプログラミングの場合、Threadオブジェクトに継承したり、Runnableインタフェースを実現したりすることができます.
   サンプルコードは次のとおりです.  
public class Main {

  public static void main(String[] args) {

    //   Thread       Runnable           
    MyRunnable mr = new MyRunnable();
    Thread t1 = new Thread(mr, "MyRunnable");
    t1.start();

    Thread t2 = new MyThread("MyThread");
    t2.start();
  }

}


/**
 *   Thread     
 */
class MyThread extends Thread {

  private String name;

  public MyThread(String name) {
    this.name = name;
  }

  @Override
  public void run() {
    // do somthing
    System.out.println("    Thread,\t" + name);
  }
}


/**
 *   Runnable     
 */
class MyRunnable implements Runnable {

  public void run() {
    // do somthing
    System.out.println("    Runnable,\t" + Thread.currentThread().getName());
  }

}

2. ThreadとRunnableの異同
同じ点:上記の例から、ThreadとRunnableはいずれもマルチスレッドプログラミングを実現できることがわかります.
相違点:
     1.Threadはオブジェクト、Runnableはインタフェースです.
     2.javaは単一継承であるため、あるクラスが他のクラスに継承されなければならない場合、Threadに継承することはできず、Runnableインタフェースを実装することしかできません.Runnableインタフェースを多く使用して、より良い拡張性を維持することをお勧めします.
     3.Runnableベースのコードは、複数のThreadインスタンスによって共有され、同じRunnableリソースを複数のスレッドで処理する場合に適用される.
     4.Threadを作成する時、プログラミングは異なって、Runnableインタフェースの方式は1句のThread t 1=new Thread(Runnable,threadName)を多くする.