ホームページ >Java >&#&チュートリアル >JAVA -- スレッドとマルチスレッド 詳細な図による説明

JAVA -- スレッドとマルチスレッド 詳細な図による説明

php是最好的语言
php是最好的语言オリジナル
2018-08-08 10:28:411298ブラウズ

【スレッド】Javaプログラムの単一タスクフロー。各タスクを比較的独立したスレッドで実装します。 main はメインスレッドです

【同時実行】複数のタスクを同時に完了します。プログラム実行のステップはすべて順序通りですが、多くの場合、問題を順番に処理するのではなく、並行して処理する必要があります
[マルチスレッド] スレッドもオブジェクトとみなされ、マルチスレッドとは複数のスレッド オブジェクトを指します
【API Threadクラスでサポート】java.lang.Thread. Thread クラスのオブジェクトはスレッド オブジェクトです
演習 1、スレッド オブジェクトの初期化、スレッドの出力

package pkg3;public class test3 implements Runnable{
   Thread th1;   public test3() {//2
       th1=new Thread(this);//2-1初始化了线程对象
       th1.start();//2-2启动了线程对象,自动调用run方法
   }   public static void main(String[] args){       new test3();//1.从主线程开始,调用构造方法

   }@Overridepublic void run() {//3
    // TODO Auto-generated method stub
    System.out.println("线程运行了");//3-1打印线程,“运行了”}
}

JAVA -- スレッドとマルチスレッド 詳細な図による説明

演習 2、スレッドのライフサイクル: new、runnable、not runnable、dead

package pkg3;public class test3 implements Runnable{
   Thread th1;   public test3() {//2
       th1=new Thread(this);//2-1初始化了线程对象
       th1.start();//2-2启动了线程对象,自动调用run方法
   }   public static void main(String[] args){       new test3();//1.从主线程开始,调用构造方法

   }@Overridepublic void run() {//3
    // TODO Auto-generated method stub
    while(true) {
    System.out.println("线程运行了");//3-1打印线程,“运行了”
    try {
        th1.sleep(500);//强制睡眠500毫秒,进入非运行状态not runnable(睡眠、堵塞、排队)
    } catch (InterruptedException e) {        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}
}

JAVA -- スレッドとマルチスレッド 詳細な図による説明

演習 3、マルチスレッド

package pkg3;public class test3 implements Runnable{
   Thread th1,th2;   public test3() {//2
       th1=new Thread(this);//2-1初始化了线程对象
       th2=new Thread(this);
       th1.start();//2-2启动了线程对象,自动调用run方法
       th2.start();
   }   public static void main(String[] args){       new test3();//1.从主线程开始,调用构造方法

   }@Overridepublic void run() {//3
    // TODO Auto-generated method stub
    /*while(true) {
    System.out.println("线程运行了");//3-1打印线程,“运行了”
    try {
        th1.sleep(500);//强制睡眠500毫秒,进入非运行状态not runnable(睡眠、堵塞、排队)
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }*/
    Thread th=Thread.currentThread();//这个方法可以判断进入run方法的线程对象
    if(th==th1) {
        System.out.println("线程1运行了");
    }    if(th==th2) {
        System.out.println("线程2运行了");
    }
}
}

JAVA -- スレッドとマルチスレッド 詳細な図による説明

関連する推奨事項:

Java -- マルチスレッド

Java スレッドの詳細な説明とスレッドとプロセスの違い

以上がJAVA -- スレッドとマルチスレッド 詳細な図による説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。