溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java多線程知識點有哪些

發(fā)布時間:2021-11-16 09:39:46 來源:億速云 閱讀:105 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“java多線程知識點有哪些”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java多線程知識點有哪些”吧!

1 并發(fā)執(zhí)行

應用程序可以同時運行(一邊聽歌,一邊玩游戲)。 在應用程序中,不同的程序塊也是可以同時運行,這種多個程序塊同時運行的現(xiàn)象被稱為 并發(fā)執(zhí)行。 【在多任務操作系統(tǒng)中,表面上是支持并發(fā)執(zhí)行的,所有的應用程序都是由CPU執(zhí)行的,對于一個CPU而言,在某個時間點只能運行一個程序。由于CPU運行很快,感覺是并發(fā)執(zhí)行的】

2 進程

在一個操作系統(tǒng)中,每個獨立執(zhí)行的程序都可稱為一個進程。

3 線程 在一個進程中還可以有多個執(zhí)行單元同時運行。這些執(zhí)行單元可以看作程序的一條條線索,被稱為線程。 【當一個java程序啟動時,就會產(chǎn)生一個進程,該進程會默認創(chuàng)建一個線程,在這個線程上會運行main()方法中的代碼】

4 多線程程序

多段代碼交替運行。 【看似是同時執(zhí)行,其實和進程一樣,由CPU輪流執(zhí)行?!?/p>

5 線程的創(chuàng)建

1.繼承Thread類 2.實現(xiàn)Runnable接口

6 后臺線程

setDaemon(true)

新創(chuàng)建的線程默認都是前臺線程。 【只要有一個前臺線程在運行,這個進程就不會結(jié)束,如果一個進程只有后臺線程運行,這個進程就會結(jié)束】

**7 線程的生命周期及狀態(tài)轉(zhuǎn)換 **

在Java中,任何對象都有生命周期,線程也不例外。 線程整個生命周期分為5個階段: java多線程知識點有哪些

8 線程的調(diào)度 JVM會按照特定的機制為程序中的每個線程分配CPU的使用權(quán)。這種機制被稱為線程的調(diào)度。 在計算機中,線程調(diào)度有兩種模型: 1.分時調(diào)度模型 2.搶占式調(diào)度模型 JVM默認采用搶占式調(diào)度模型,大多數(shù)情況下程序員不需要去關(guān)心它。

8.1 線程的優(yōu)先級

線程的優(yōu)先級用1~10之間的正數(shù)表示,數(shù)字越大優(yōu)先級越高。 [處于就緒狀態(tài)的每個線程都有自己的優(yōu)先級] main線程具有普通優(yōu)先級。(5) 【可以通過Thread類的setPriority方法對其進行設置】 

8.2 線程休眠

sleep(long millis)

使正在執(zhí)行的線程暫停,將CPU讓給別的線程。這是可以使用靜態(tài)方法sleep.(該方法讓當前正在執(zhí)行的線程暫停一段時間,進入休眠等待狀態(tài)。) sleep方法聲明拋出InterruptedException異常。因此在調(diào)用該方法時應該捕獲異常。 注意:sleep時靜態(tài)方法,只能控制當前正在運行的線程休眠。而不能控制其他線程休眠。 

8.3 線程讓步

yield()

和sleep類似,區(qū)別在于yield方法不會阻塞該線程。只是將線程轉(zhuǎn)換成就緒狀態(tài)。讓系統(tǒng)的調(diào)度器重新調(diào)度一次。 【當某個線程調(diào)用yield()方法之后,只有與當前線程優(yōu)先級相同或者更高的線程才能獲得執(zhí)行的機會】 

8.4 線程插隊

join()

當在某個線程中調(diào)用其他線程的join()方法時,調(diào)用的線程將被阻塞,知道被join()方法加入的線程執(zhí)行完后它才會繼續(xù)運行。

9 多線程同步 前提:多個線程去訪問同一個資源時,會引發(fā)一些安全問題。 解決:實現(xiàn)多線程同步,即限制某個資源在同一時刻只能被一個線程訪問。 

9.1 同步代碼塊 Object lock = new Object(); 注意:鎖對象的創(chuàng)建代碼不能放到run()方法中。 

9.2 同步方法 被synchronized修飾的方法在某一時刻只允許一個線程訪問,訪問該方法的其他線程都會發(fā)生阻塞,直到當前線程訪問完畢后,其他線程才有機會執(zhí)行方法。

感謝各位的閱讀,以上就是“java多線程知識點有哪些”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對java多線程知識點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI