Thread基礎及兩種創建方式
- 2020 年 3 月 11 日
- 筆記
今天本人給大家講解一下多線程,如有不對的或者講的不好的可以多多提出,我會進行相應的更改,先提前感謝提出意見的各位了!!!
說說多線程本人自己對它理解的定義:因計算機的CPU支持能夠在同一時間執行多於一條線程並發執行的技術我們稱它為多線程。 而在一個應用程序中獨立運行一個片段的我們叫做“線程”(Thread)而線程有優先級的區別,級別越高的也先執行,並且還分守護和非守護線程,守護線程為其他服務提供服務的線程不能獨立運行。當我們JVM中只有守護線程時JVM會退出。
java中實現線程的方法有很多,本人說兩種方法:第一種是:繼承Thread 第二種是:實現Runnable接口。
寫案例之前先說一下這兩種方法的區別!!
我相信有很多寶寶們在基礎不錯的情況下看到這兩種方法的叫法,大概知道是怎麼回事了。
先說說第一種方式:繼承Thread
在java中要實現線程需要依賴於java.lang.Thread類,而Thread類是一個線程類,當我們繼承了Thread類後,是需要實現它的run()方法,在主線程的main()里啟動它的start()方法,就可以開啟線程,自動調用run()方法。
案例:
代碼如下
運行結果:
可以看到運行:每次輸出的值是不一樣的,這就是多線程的緣故,所有的線程輪流使用CPU的使用權,執行平均每個線程佔用CPU的時間片,時間片越長,它執行的就越多,優先級越高的線程了,他的時間片也越多,好比我們剛剛寫的這個Demo案例一樣,時間片的不同,導致他輸出的信息順序時間也有同。
如果還不是很明白,單核的CPU,單個CPU某一個時間點只能執行一個任務,那麼就在打個比方,就好比我們一邊聽歌一邊玩遊戲電腦都可以一起進行,那是因為CPU的線程運算速度很快,我們肉眼基本發現不了他會有延遲的。
第二種方式:實現Runnable(推薦使用,安全性高,因為是直接在類中創建的一個Thread對象的)
看到實現二字,那就會想到繼承,沒錯。第二種方式就是繼承Runnable這個接口類,我們在第一種方式使用的Thread類,它也是實現了Runnable這個接口的,那麼案例啟。
注意:創建線程對象必須使用Thread這個對象,因為它實現了Runnable這個接口
案例:
運行結果:
下面說一下為什麼是創建對象的時候傳入的是tr這個類
創建線程的基本用法講解完畢,又不懂或者不理解的可以在評論區給本人留言