1. 程式人生 > 其它 >|NO.Z.00090|——————————|BigDataEnd|——|Java&多執行緒.V02|------------------------------------------------|Java.v02|執行緒概念|執行原理|建立方式|相關方法|

|NO.Z.00090|——————————|BigDataEnd|——|Java&多執行緒.V02|------------------------------------------------|Java.v02|執行緒概念|執行原理|建立方式|相關方法|



[BigDataJava:Java&多執行緒.V02]                                                                                 [BigDataJava.核心類庫] [|章節三|多執行緒|執行緒的概念和執行原理|執行緒的建立方式和相關方法|]








一、執行緒的建立(重中之重)
### --- 執行緒的建立(重中之重)

——>        [執行緒的概念和執行原理]——[執行緒的建立方式和相關方法]
### --- Thread類的概念

——>        java.lang.Thread類代表執行緒,任何執行緒物件都是Thread類(子類)的例項。
——>        Thread類是執行緒的模板,封裝了複雜的執行緒開啟等操作,封裝了作業系統的差異性。
### --- 建立方式

——>        自定義類繼承Thread類並重寫run方法,然後建立該類的物件呼叫start方法。
——>        自定義類實現Runnable介面並重寫run方法,
——>        建立該類的物件作為實參來構造Thread型別的物件,然後使用Thread型別的物件呼叫start方法。
二、相關的方法
方法宣告 功能介紹
Thread() 使用無參的方式構造物件
Thread(String name) 根據引數指定的名稱來構造物件
Thread(Runnable target) 根據引數指定的引用來構造物件,其中Runnable是個介面型別
Thread(Runnable target,String name) 根據引數指定引用和名稱來構造物件
void run() 若使用Runnable引用構造了執行緒物件,呼叫該方法時最終呼叫介面中的版本
若沒有使用Runnable引用構造執行緒物件,呼叫該方法時則啥也不做
void start()  用於啟動執行緒,Java虛擬機器會自動呼叫該執行緒的run方法
三、執行流程
### --- 執行流程

——>        執行main方法的執行緒叫做主執行緒,執行run方法的執行緒叫做新執行緒/子執行緒。
——>        main方法是程式的入口,對於start方法之前的程式碼來說,由主執行緒執行一次,
——>        當start方法呼叫成功後執行緒的個數由1個變成了2個,
——>        新啟動的執行緒去執行run方法的程式碼,主執行緒繼續向下執行,
——>        兩個執行緒各自獨立執行互不影響。
——>        當run方法執行完畢後子執行緒結束,當main方法執行完畢後主執行緒結束。
——>        兩個執行緒執行沒有明確的先後執行次序,由作業系統排程演算法來決定。
四、程式設計程式碼
package com.yanqi.task18;

public class ThreadTest {

    public static void main(String[] args) {

        // 1.使用無參方式構造Thread型別的物件
        // 由原始碼可知:Thread類中的成員變數target的數值為null。
        Thread t1 = new Thread();
        // 2.呼叫run方法進行測試
        // 由原始碼可知:由於成員變數target的數值為null,因此條件if (target != null)不成立,跳過{}中的程式碼不執行
        //  而run方法中除了上述程式碼再無程式碼,因此證明run方法確實啥也不幹
        t1.run();
        // 3.列印一句話
        System.out.println("我想看看你到底是否真的啥也不幹!");
    }
}
五、編譯列印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=49938:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task18.ThreadTest
我想看看你到底是否真的啥也不幹!

Process finished with exit code 0








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)