1.線程與并發(fā)
1.1.理解線程與進程的區(qū)別(了解)
進程:是指一個內(nèi)存中運行的應(yīng)用程序,每個進程都有自己獨立的一塊內(nèi)存空間,一個進程中可以有多個線程(1,n)。比如在Windows的任務(wù)管理器中,一個運行的xx.exe就是一個進程。
線程:是指進程中的一個執(zhí)行任務(wù)(控制單元),一個進程中可以運行多個線程,多個線程可共享數(shù)據(jù)。
多進程:操作系統(tǒng)中同時運行的多個程序。
多線程:在同一個進程中同時運行的多個任務(wù)。
一個進程至少有一個線程,為了提高效率,可以在一個進程中開啟多個控制單元,這就是多線程。
1.2.主線程main(了解)
在運行一個簡單的Java程序的時候,就已經(jīng)存在了兩個線程,一個是主線程,一個是后臺線程——維護的垃圾回收。主線程很特殊,在啟動JVM的時候自動啟動的。
1.3.線程的創(chuàng)建和啟動(掌握)
方式一,繼承Thread類:
自定義類繼承Thread
覆寫run方法
創(chuàng)建自定義類對象
自定義類對象調(diào)用start方法
方式二,實現(xiàn)Runnable接口
自定義類實現(xiàn)Runnable接口
覆寫run方法
創(chuàng)建自定義類對象
把自定類的對象作為Thread類構(gòu)造器參數(shù),并調(diào)用Thread對象start方法
第一種使用起來方便,啟動一個線程也方便,很多功能都在Thread類中定義好了;
第二種方式啟動得依賴于Thread,因為本身Runnable中只有run方法,請看Thread的構(gòu)造方法。
1.3.1.線程體-run方法(掌握)
不管哪種方式創(chuàng)建的線程,都得覆寫run方法,因為這是線程體方法,該方法在線程啟動之后會自動被調(diào)用。
publicvoidrun(){
//線程體,線程啟動時,會自動調(diào)用本方法,所有這里是我們寫代碼的主體部分
}
線程的執(zhí)行隨機性:
一旦一個線程啟動之后就是一個獨立的線程,等待CPU的調(diào)度分配資源,不會因為啟動它的外部線程結(jié)束而結(jié)束。
多次運行該程序,觀察每次運行的結(jié)果。
1.3.2.線程的啟動(掌握)
啟動線程必須調(diào)用線程類Thread中的start方法,該方法應(yīng)該由Thread類的一個實例來調(diào)用,下面是方法簽名:
publicvoidstart()
底層會調(diào)用該線程的run方法。
只有調(diào)用了線程對象的start方法才會開啟一個新的線程,如果是直接調(diào)用對象的run方法不會開啟新的線程,只是一個單線程。
注意:啟動一個新線程,不能使用run()方法,只能使用start方法。
以上就是深圳達(dá)內(nèi)教育Java培訓(xùn)機構(gòu)小編介紹的“Java線程學(xué)習(xí)教程:多線程基礎(chǔ)開發(fā)”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。