基礎(chǔ)學(xué)習(xí)線程基礎(chǔ)知識(shí),Java視頻下載

基礎(chǔ)學(xué)習(xí)線程基礎(chǔ)知識(shí),Java視頻下載

北大青鳥長(zhǎng)沙麓谷校區(qū)      2022-03-10 10:00:01     8

基礎(chǔ)學(xué)習(xí)線程基礎(chǔ)知識(shí),Java視頻下載,  基礎(chǔ)學(xué)習(xí)線程基礎(chǔ)知識(shí),Java視頻下載,線程基礎(chǔ)知識(shí)Java并發(fā)編程,進(jìn)程和線程是操作系統(tǒng)內(nèi)兩個(gè)很基的概念,進(jìn)程是操作系統(tǒng)中

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹


  基礎(chǔ)學(xué)習(xí)線程基礎(chǔ)知識(shí),Java視頻下載,線程基礎(chǔ)知識(shí)Java并發(fā)編程,進(jìn)程和線程是操作系統(tǒng)內(nèi)兩個(gè)很基的概念,進(jìn)程是操作系統(tǒng)中進(jìn)行保護(hù)和資源分配的基本單位,操作系統(tǒng)分配資源以進(jìn)程為基本單位。而線程是進(jìn)程的組成部分代表了一條順序的執(zhí)行流。



  1、線程基礎(chǔ)概念


  線程是指在一個(gè)單獨(dú)進(jìn)程中,對(duì)于CPU和內(nèi)存而言的多個(gè)工作單位,所有線程在進(jìn)程中的資源都是共享的,包括全局?jǐn)?shù)據(jù)、執(zhí)行代碼等。


  cpu核心數(shù)與線程數(shù)


  核心數(shù) : 線程數(shù) = 1 : 1


  如一個(gè)8核的cpu,該cpu會(huì)至少支持8個(gè)線程同時(shí)運(yùn)行


  intel引入了超線程技術(shù)后:


  核心數(shù) : 線程數(shù) = 1 : 2


  在編碼過程中可以感覺到同時(shí)運(yùn)行的線程遠(yuǎn)遠(yuǎn)不止這些。由于cpu的時(shí)間片輪轉(zhuǎn)機(jī)制又稱RR調(diào)度,簡(jiǎn)單點(diǎn)講,操作系統(tǒng)會(huì)把已就緒的線程排成一個(gè)隊(duì)列,給每個(gè)進(jìn)程一個(gè)時(shí)間分片,該線程在cpu中執(zhí)行完這個(gè)時(shí)間分片后,不論是否執(zhí)行完都會(huì)讓出cpu資源給另外的線程,這樣在某一時(shí)間段內(nèi)就好像有很多線程在同時(shí)運(yùn)行。


  操作系統(tǒng)和cpu在進(jìn)行時(shí)間分片的任務(wù)切換時(shí)也是需要時(shí)間的,而且往往占用的時(shí)間比例又很大,所以在多線程開發(fā)時(shí)關(guān)注上下文切換對(duì)于多線程執(zhí)行時(shí)間和性能的影響。


  二、進(jìn)程和線程區(qū)別


  進(jìn)程:程序運(yùn)行進(jìn)行資源分配的最小單位,進(jìn)程中有多個(gè)線程,會(huì)共享這個(gè)線程的資源


  線程:cpu調(diào)度的最小單位,必須依賴進(jìn)程而存在


  例子:?jiǎn)?dòng)的一個(gè)jar包程序就是一個(gè)進(jìn)程,而可以通過啟動(dòng)參數(shù)配置它的內(nèi)存大小,-xmx,-xms等。而每一個(gè)請(qǐng)求都是在線程上去進(jìn)行的,cpu通過執(zhí)行線程任務(wù)完成每個(gè)請(qǐng)求任務(wù)。


  三、并行和并發(fā)


  并行:同一時(shí)刻,可以同時(shí)處理事情的能力


  并發(fā):與單位時(shí)間有關(guān),在單位時(shí)間內(nèi)可以處理問題的能力


  舉個(gè)例子,假設(shè)不考慮超線程技術(shù),一個(gè)4核cpu在任何一個(gè)時(shí)刻處理的是4個(gè)線程,并行數(shù)為4,而由于時(shí)間片輪轉(zhuǎn)機(jī)制,它在1秒內(nèi)可以支持處理100個(gè)線程,它在1秒內(nèi)的并發(fā)數(shù)為100


  四、高并發(fā)編程優(yōu)勢(shì)


  充分利用cpu的資源。如果是單線程,只占用一個(gè)核,其它的空閑;加快響應(yīng)時(shí)間。合理的設(shè)計(jì)多線程程序,使請(qǐng)求處理加快;程序模塊化異步化


  線程共享資源,會(huì)存在沖突、會(huì)存在死鎖、啟動(dòng)線程太多,濫用線程,壓垮服務(wù)器。線程方法,java線程是協(xié)作式的,而不是搶占式


  五、線程終止的方法interrupt()


  線程之前提供了stop(),resume(),suspend()方法來終止線程,但已不建議使用,stop()會(huì)導(dǎo)致線程不會(huì)正確的釋放資源,suspend()會(huì)導(dǎo)致死鎖。


  要通過interrupt(),isInterrupted(),static interrupted()來自己實(shí)現(xiàn)中斷線程


  interrupt() :調(diào)用一個(gè)線程的interrupt() 方法中斷一個(gè)線程,并不是強(qiáng)行關(guān)閉這個(gè)線程,只是跟這個(gè)線程打個(gè)招呼,將線程的中斷標(biāo)志位置為true,線程是否中斷,由線程本身決定。


  isInterrupted(): 判定當(dāng)前線程是否處于中斷狀態(tài)。


  static interrupted() :判定當(dāng)前線程是否處于中斷狀態(tài),同時(shí)中斷標(biāo)志位改為false。


  thead.setPriority()方法


  優(yōu)先級(jí)的范圍1~100,缺省為5,但線程的優(yōu)先級(jí)不可靠,不建議作為線程開發(fā)時(shí)候的手段。


  java線程是映射到系統(tǒng)的原生線程來實(shí)現(xiàn)的,所以線程的調(diào)度最終決定于操作系統(tǒng)。雖然現(xiàn)在很多操作系統(tǒng)提供了線程優(yōu)先級(jí)的概念,但是不見得會(huì)與java線程的優(yōu)先級(jí)一一對(duì)應(yīng),如果優(yōu)先級(jí)比java線程多還好說,要是少的話,就不得不出現(xiàn)幾個(gè)優(yōu)先級(jí)相同的情況了。


  不能太依賴優(yōu)先級(jí),優(yōu)先級(jí)可能會(huì)被系統(tǒng)自行改變。在widows系統(tǒng)存在著一個(gè)“優(yōu)先級(jí)推進(jìn)器”,它的大致作用就是當(dāng)前系統(tǒng)發(fā)現(xiàn)一個(gè)線程執(zhí)行的特別“勤奮努力”的話,可能就會(huì)越過線程優(yōu)先級(jí)給它分配時(shí)間。



  以上就是北大青鳥長(zhǎng)沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“基礎(chǔ)學(xué)習(xí)線程基礎(chǔ)知識(shí),Java視頻下載”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。