大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java基礎(chǔ)學(xué)習(xí):java變量生命周期

Java基礎(chǔ)學(xué)習(xí):java變量生命周期

更新時間:2020-04-03 16:04:06 來源:動力節(jié)點 瀏覽3491次


  1.1. 線程生命周期和狀態(tài)(重點)


Java基礎(chǔ)學(xué)習(xí):java變量生命周期


  新建:當(dāng)程序使用new創(chuàng)建一個線程后,該線程處于新建狀態(tài),此時他和其他java對象一樣,僅僅由Java虛擬機為其分配內(nèi)存并初始化成員變量值。


  可運行狀態(tài):RUNNABLE狀態(tài)實際上可細(xì)分成兩種狀態(tài),READY和RUNNING。分別表示就緒狀態(tài)和運行狀態(tài)。


  就緒狀態(tài):當(dāng)線程對象調(diào)用start()方法后,該線程處于就緒狀態(tài),進(jìn)入線程隊列排隊。此時該狀態(tài)線程并未開始執(zhí)行,僅表示可以運行了。至于該線程何時運行,取決于CPU調(diào)度器的調(diào)度。


  運行狀態(tài):表示某線程對象被CPU調(diào)度器的調(diào)度,執(zhí)行線程體。就緒狀態(tài)和運行狀態(tài)是可以相互切換的,切換的原因依舊參照CPU調(diào)度器調(diào)度了哪一個線程。


  阻塞狀態(tài):正在運行的線程遇到某個特殊情況如,同步、等待I/O操作完成等。 進(jìn)入阻塞狀態(tài)的線程讓出CPU資源,并暫時停止自己的執(zhí)行。


  等待狀態(tài):有時一個可運行狀態(tài)線程轉(zhuǎn)變成等待狀態(tài),它會等待另一個線程來執(zhí)行一個任務(wù),一個等待狀態(tài)的線程只有通過另一個線程通知它轉(zhuǎn)到可運行狀態(tài),才能繼續(xù)執(zhí)行。


  計時等待狀態(tài):進(jìn)入等待狀態(tài)的線程如果沒有其他線程對象來喚醒它,那么該線程對象將一直等待下去,此時我們可以考慮設(shè)計一個類似于鬧鐘一樣的提示器,該提示器會在等待特定時間段之后喚醒該線程對象。


  終止?fàn)顟B(tài):即死亡狀態(tài),表示線程終止。當(dāng)線程成功執(zhí)行完成或線程拋出未捕獲的Exception或Error或調(diào)用線程的stop方法(易導(dǎo)致死鎖,不推薦)。


  1.2. 操作線程的方法(掌握)


  1.2.1. join方法(了解)


  join方法的主要作用就是同步,它可以使得線程之間的并行執(zhí)行變?yōu)榇袌?zhí)行。


  比如在A線程中調(diào)用了B線程的join()方法時,表示只有當(dāng)B線程執(zhí)行完畢時,A線程才能繼續(xù)執(zhí)行。


  1.2.2. sleep方法(了解)


  sleep方法讓正在執(zhí)行的線程暫停一段時間,進(jìn)入阻塞狀態(tài),常常用來模擬網(wǎng)絡(luò)延遲等。


  sleep(long milllis) throws InterruptedException:毫秒為單位


  調(diào)用sleep()后,在指定時間段之內(nèi),該線程不會獲得執(zhí)行的機會


  1.2.3. 線程的優(yōu)先級(了解)


  每個線程都有優(yōu)先級,優(yōu)先級的高低只和線程獲得執(zhí)行機會的次數(shù)多少有關(guān)。并不是說優(yōu)先級高的就一定先執(zhí)行,哪個線程的先運行取決于CPU的調(diào)度;


  Thread對象的setPriority(int x)和getPriority()用來設(shè)置和獲得優(yōu)先級。


  1.2.4. 后臺線程(了解)


  所謂后臺線程,一般用于為其他線程提供服務(wù)。也稱為守護(hù)線程。JVM的垃圾回收就是典型的后臺線程。


  特點:若所有的前臺線程都死亡,后臺線程自動死亡。


  Thread對象setDaemon(true)用來設(shè)置后臺線程。


  setDaemon(true)必須在start()調(diào)用前,否則拋IllegalThreadStateException異常。


  2. 線程安全性


  2.1. 繼承方式VS實現(xiàn)方式(掌握)


  當(dāng)多線程并發(fā)訪問同一個資源時,會導(dǎo)致線程出現(xiàn)安全性的原因,看案例。


  案例:現(xiàn)有50個蘋果,現(xiàn)在有請三個童鞋(小A、小B、小C)上臺表演吃蘋果。


  因為A、B、C三個人可以同時吃蘋果,此時得使用多線程技術(shù)來實現(xiàn)這個案例。


  分析: 可以定義三個線程對象,并啟動線程.


  第一步:每一個同學(xué)吃蘋果的時候:先展示自己拿到手上蘋果的編號,如1,2,3,36...


  第二步:再吃掉蘋果(意味著蘋果的總數(shù)少一個)


  方式1:可以使用繼承Thread方式來實現(xiàn).


  方式2:可以使用實現(xiàn)Runnable方式來實現(xiàn).


  使用繼承方式


Java基礎(chǔ)學(xué)習(xí):java變量生命周期


  使用繼承方式完成該案例的時候,會發(fā)現(xiàn)A、B、C都各自吃了50個蘋果,為何?


  使用實現(xiàn)方式


Java基礎(chǔ)學(xué)習(xí):java變量生命周期


  在使用實現(xiàn)方式的時候,我們發(fā)現(xiàn)A、B、C一共吃了50個蘋果,為何?


  通過吃蘋果比賽,分析繼承方式和實現(xiàn)方式的區(qū)別:


  繼承方式:


  Java中類是單繼承的,如果繼承了Thread了,該類就不能再有其他的直接父類了。


  從操作上分析,繼承方式更簡單,獲取線程名字也簡單。


  從多線程共享同一個資源上分析,繼承方式不能多個線程共享同一個資源。


  實現(xiàn)方式:


  Java中類可以多實現(xiàn)接口,此時該類還可以繼承其他類,并且還可以實現(xiàn)其他接口(設(shè)計上,更優(yōu)雅)。


  從操作上分析,獲取線程名字也比較復(fù)雜,得使用Thread.currentThread()來獲取當(dāng)前線程的引用。


  從多線程共享同一個資源上分析,實現(xiàn)方式可以多線程共享同一個資源。


  以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“Java基礎(chǔ)學(xué)習(xí):java變量生命周期”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 奇米成人 | 欧美日韩一区二区三区毛片 | 久久国产精品国产自线拍免费 | 色综合天天综合网亚洲影院 | 久久se精品一区二区国产 | 国产精品探花一区在线观看 | 国产欧美日韩在线观看 | 久久综合精品国产一区二区三区无 | 99久久一区二区精品 | 免费观看成人毛片 | 四虎永久在线观看免费网站网址 | 国产成人在线看 | 亚洲夜夜骑 | 麻豆精品国产免费观看 | 亚洲欧美精品网站在线观看 | 国产91精品福利在线观看 | 九九99久久精品国产 | 中文视频 | 欧美性xxxxxx爱 | 爱爱永久免费视频网站 | 国内亚州视频在线观看 | 成人午夜久久精品 | 青娱乐伊人| 99re这里只有精品在线 | 九9热这里只有真品 | 伊人网99 | 99久久精品费精品国产一区二 | 成人国产三级在线播放 | 69成人做爰视频在线观看 | 中文字幕在线观看日本 | 人人爱天天做夜夜爽88 | 亚洲精品大片 | 337p欧美超大胆日本人术艺术 | 一级毛片免费 | 久久精品蜜芽亚洲国产a | 玖玖视频精品 | 日日干狠狠操 | h片在线免费 | 99国产精品热久久久久久 | bbbb成人毛片免费看 | 男人天堂视频网 |