大战熟女丰满人妻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ù)文檔推薦 >>
主站蜘蛛池模板: 9久re在线观看视频精品 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 99色在线| 欧美色欧美亚洲高清在线观看 | 久久大胆视频 | 中文字幕天堂久久精品 | 香港aa三级久久三级不卡 | 一级日本特黄毛片视频 | 国产一区二区三区视频 | 91在线视频免费播放 | 福利入口在线观看 | 九九99热久久精品在线6手机 | 日韩中文精品亚洲第三区 | 久久ri精品高清一区二区三区 | 91久久夜色精品国产九色 | 伊人久热这里只有精品视频99 | 奇米影视第四色在线 | 欧美成人性毛片免费版 | 99精品高清不卡在线观看 | 成人免费观看网欧美片 | 久久大香香蕉国产免费网站 | 欧美国产精品亚洲精品第一区 | 在线看污网站 | 国产一级毛片视频在线! | 日韩视频欧美视频 | 最新地址四虎www4hutv | 国产香蕉98碰碰久久人人 | 毛片机地 | 日韩在线无 | 色综合天天综合网国产人 | 欧美一级毛片欧美毛片视频 | 成年人免费毛片 | 久久一区不卡中文字幕 | 日本一级特黄毛片免费视频 | 天天做夜夜爽 | 99视频只有精品 | 亚洲欧美极品 | 免费视频不卡一区二区三区 | 亚洲一区小说区中文字幕 | 欧美成人免费一区在线播放 | 日本不卡免费新一区二区三区 |