更新時間:2020-04-03 16:04:06 來源:動力節點 瀏覽3512次
1.1. 線程生命周期和狀態(重點)
新建:當程序使用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方式來實現.
使用繼承方式
使用繼承方式完成該案例的時候,會發現A、B、C都各自吃了50個蘋果,為何?
使用實現方式
在使用實現方式的時候,我們發現A、B、C一共吃了50個蘋果,為何?
通過吃蘋果比賽,分析繼承方式和實現方式的區別:
繼承方式:
Java中類是單繼承的,如果繼承了Thread了,該類就不能再有其他的直接父類了。
從操作上分析,繼承方式更簡單,獲取線程名字也簡單。
從多線程共享同一個資源上分析,繼承方式不能多個線程共享同一個資源。
實現方式:
Java中類可以多實現接口,此時該類還可以繼承其他類,并且還可以實現其他接口(設計上,更優雅)。
從操作上分析,獲取線程名字也比較復雜,得使用Thread.currentThread()來獲取當前線程的引用。
從多線程共享同一個資源上分析,實現方式可以多線程共享同一個資源。
以上就是動力節點java培訓機構的小編針對“Java基礎學習:java變量生命周期”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習