java多線程知識(shí)點(diǎn)有哪些

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

南澳ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

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

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

2 進(jìn)程

在一個(gè)操作系統(tǒng)中,每個(gè)獨(dú)立執(zhí)行的程序都可稱(chēng)為一個(gè)進(jìn)程。

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

4 多線程程序

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

5 線程的創(chuàng)建

1.繼承Thread類(lèi) 2.實(shí)現(xiàn)Runnable接口

6 后臺(tái)線程

setDaemon(true)

新創(chuàng)建的線程默認(rèn)都是前臺(tái)線程。 【只要有一個(gè)前臺(tái)線程在運(yùn)行,這個(gè)進(jìn)程就不會(huì)結(jié)束,如果一個(gè)進(jìn)程只有后臺(tái)線程運(yùn)行,這個(gè)進(jìn)程就會(huì)結(jié)束】

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

在Java中,任何對(duì)象都有生命周期,線程也不例外。 線程整個(gè)生命周期分為5個(gè)階段: java多線程知識(shí)點(diǎn)有哪些

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

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

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

8.2 線程休眠

sleep(long millis)

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

8.3 線程讓步

yield()

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

8.4 線程插隊(duì)

join()

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

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

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

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

感謝各位的閱讀,以上就是“java多線程知識(shí)點(diǎn)有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)java多線程知識(shí)點(diǎn)有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

新聞標(biāo)題:java多線程知識(shí)點(diǎn)有哪些
分享URL:http://muchs.cn/article10/isjsgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站收錄虛擬主機(jī)、網(wǎng)站改版關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)