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