更新時間:2020-02-26 11:02:05 來源:動力節(jié)點(diǎn) 瀏覽2279次
1.線程與并發(fā)
1.1.理解線程與進(jìn)程的區(qū)別(了解)
進(jìn)程:是指一個內(nèi)存中運(yùn)行的應(yīng)用程序,每個進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間,一個進(jìn)程中可以有多個線程(1,n)。比如在Windows的任務(wù)管理器中,一個運(yùn)行的xx.exe就是一個進(jìn)程。
線程:是指進(jìn)程中的一個執(zhí)行任務(wù)(控制單元),一個進(jìn)程中可以運(yùn)行多個線程,多個線程可共享數(shù)據(jù)。
多進(jìn)程:操作系統(tǒng)中同時運(yùn)行的多個程序。
多線程:在同一個進(jìn)程中同時運(yùn)行的多個任務(wù)。
一個進(jìn)程至少有一個線程,為了提高效率,可以在一個進(jìn)程中開啟多個控制單元,這就是多線程。
1.2.主線程main(了解)
在運(yùn)行一個簡單的Java程序的時候,就已經(jīng)存在了兩個線程,一個是主線程,一個是后臺線程——維護(hù)的垃圾回收。主線程很特殊,在啟動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í)行隨機(jī)性:
一旦一個線程啟動之后就是一個獨(dú)立的線程,等待CPU的調(diào)度分配資源,不會因為啟動它的外部線程結(jié)束而結(jié)束。
多次運(yùn)行該程序,觀察每次運(yùn)行的結(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方法。
以上就是動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java線程學(xué)習(xí)教程:多線程基礎(chǔ)開發(fā)”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743