黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Java基礎學習:java變量生命周期

更新時間:2020-04-03 16:04:06 來源:動力節點 瀏覽3512次


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


Java基礎學習:java變量生命周期


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


  可運行狀態:RUNNABLE狀態實際上可細分成兩種狀態,READY和RUNNING。分別表示就緒狀態和運行狀態。


  就緒狀態:當線程對象調用start()方法后,該線程處于就緒狀態,進入線程隊列排隊。此時該狀態線程并未開始執行,僅表示可以運行了。至于該線程何時運行,取決于CPU調度器的調度。


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


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


  等待狀態:有時一個可運行狀態線程轉變成等待狀態,它會等待另一個線程來執行一個任務,一個等待狀態的線程只有通過另一個線程通知它轉到可運行狀態,才能繼續執行。


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


  終止狀態:即死亡狀態,表示線程終止。當線程成功執行完成或線程拋出未捕獲的Exception或Error或調用線程的stop方法(易導致死鎖,不推薦)。


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


  1.2.1. join方法(了解)


  join方法的主要作用就是同步,它可以使得線程之間的并行執行變為串行執行。


  比如在A線程中調用了B線程的join()方法時,表示只有當B線程執行完畢時,A線程才能繼續執行。


  1.2.2. sleep方法(了解)


  sleep方法讓正在執行的線程暫停一段時間,進入阻塞狀態,常常用來模擬網絡延遲等。


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


  調用sleep()后,在指定時間段之內,該線程不會獲得執行的機會


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


  每個線程都有優先級,優先級的高低只和線程獲得執行機會的次數多少有關。并不是說優先級高的就一定先執行,哪個線程的先運行取決于CPU的調度;


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


  1.2.4. 后臺線程(了解)


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


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


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


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


  2. 線程安全性


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


  當多線程并發訪問同一個資源時,會導致線程出現安全性的原因,看案例。


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


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


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


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


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


  方式1:可以使用繼承Thread方式來實現.


  方式2:可以使用實現Runnable方式來實現.


  使用繼承方式


Java基礎學習:java變量生命周期


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


  使用實現方式


Java基礎學習:java變量生命周期


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


  通過吃蘋果比賽,分析繼承方式和實現方式的區別:


  繼承方式:


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


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


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


  實現方式:


  Java中類可以多實現接口,此時該類還可以繼承其他類,并且還可以實現其他接口(設計上,更優雅)。


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


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


  以上就是動力節點java培訓機構的小編針對“Java基礎學習:java變量生命周期”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品人人爽人人做 | 免费人成在线看 | 亚洲国产成人久久精品影视 | 美女黄18 | 国产成人综合高清在线观看 | 美女黄页在线观看 | 成人亚洲欧美日韩在线 | 成人全黄三级视频在线观看 | 国产精品香蕉在线一区 | 欧美在线网址 | 一级毛片在播放免费 | 欧美专区亚洲 | 成人性色大片 | 中国一级黄色毛片 | 免费中文字幕视频 | 免费亚洲视频 | 欧美整片sss| 欧美午夜春性猛交xxxx | 日韩精品一 | 欧美怀孕色xxxxx | 高清国产亚洲va精品 | 青春久久 | 精品视频一区二区三区免费 | 日本欧美一区二区 | 美国黄色毛片一级 | 免费一级a毛片在线 | 色网站视频 | 欧美最猛性xxxxx短视频 | 国产成人久久一区二区三区 | 成人黄激情免费视频 | 欧美a视频在线观看 | 国产高清看片日韩欧美久久 | 国产91视频观看 | 免费看真人a一级毛片 | 成人午夜精品 | 黄网站在线观看高清免费 | 亚洲国产高清在线 | 夜夜躁天天躁很很躁 | 中国成人免费视频 | 九九99久久 | 亚洲精品天堂 |