-
線程的生命周期 創(chuàng)建 -> 就緒 -> 運(yùn)行 -> (阻塞->解除阻塞->就緒->運(yùn)行) ->消亡 創(chuàng)建狀態(tài):新建了一個(gè)線程對(duì)象,如Thread t = new Thread(); 就緒狀態(tài):調(diào)用線程的start()方法啟動(dòng)線程后,線程就進(jìn)入了就緒狀態(tài),此時(shí)線程只是進(jìn)入了線程隊(duì)列,等待獲取cpu資源,具備了運(yùn)行的條件,但并不一定已經(jīng)開(kāi)始運(yùn)行了,因?yàn)楫?dāng)前cpu可能在執(zhí)行別的線程. 運(yùn)行狀態(tài):當(dāng)線程獲取了cpu資源時(shí)就進(jìn)入了運(yùn)行狀態(tài),執(zhí)行線程的run方法. 消亡:一旦線程的run方法執(zhí)行完畢后線程將會(huì)消亡. 阻塞狀態(tài):當(dāng)線程在運(yùn)行狀態(tài)時(shí),可能會(huì)遇到一些阻塞事件,此時(shí)當(dāng)前線程會(huì)讓出cpu資源,暫停了自己的執(zhí)行,并且進(jìn)入阻塞狀態(tài). 當(dāng)阻塞解除時(shí)便會(huì)重新進(jìn)入就緒狀態(tài),繼續(xù)進(jìn)入線程隊(duì)列等待獲取cpu資源.當(dāng)重新獲取了cpu資源后,會(huì)從上次已執(zhí)行的run方法代碼后繼續(xù)執(zhí)行. 阻塞事件:線程的sleep()方法、線程的join()方法等. 大多數(shù)情況下,線程是因?yàn)閳?zhí)行完run方法就會(huì)進(jìn)入終止?fàn)顟B(tài),除非人為調(diào)用了stop方法.查看全部
-
守護(hù)線程當(dāng)所有線程終止時(shí)一定會(huì)終止。查看全部
-
就緒狀態(tài)其實(shí)就是等待CPU調(diào)度資源。查看全部
-
兩種方式的比較 Runnable方式可以避免Thread方式由于Java單繼承特性帶來(lái)的缺陷. Runnable的代碼可以被多個(gè)線程(Thread實(shí)例)共享,適合于多個(gè)線程處理同一資源的情況. 線程的執(zhí)行過(guò)程也是隨機(jī)的,當(dāng)線程一搶占了cpu資源,在執(zhí)行run方法的某句代碼時(shí)可能會(huì)被線程二所搶占cpu資源,因此線程一將會(huì)等待重新獲取cpu資源,因此程序可能會(huì)出現(xiàn)數(shù)據(jù)混亂的現(xiàn)象. 線程對(duì)cpu資源的搶占也是隨機(jī)的.查看全部
-
線程創(chuàng)建的兩種方式查看全部
-
兩種方式對(duì)比查看全部
-
對(duì)比圖查看全部
-
實(shí)現(xiàn)Runnable接口查看全部
-
繼承Thread類(lèi)查看全部
-
jstack和jvm本身的工具查看線程快照查看全部
-
jstack生成線程快照查看全部
-
thread.currentthread.getname 獲取該線程的名字 sleep 和wait的區(qū)別是什么查看全部
-
線程。需要用到j(luò)stack工具查看全部
-
用戶(hù)線程 守護(hù)線程 如何創(chuàng)建守護(hù)線程。 thread.setdaemon(true) 用戶(hù)線程消亡。守護(hù)線程也跟著消失查看全部
-
線程。要么繼承thread 要么實(shí)現(xiàn)runnable接口 幾個(gè)線程同時(shí)工作時(shí) 系統(tǒng)會(huì)分配給她們時(shí)間片 在執(zhí)行run方法的時(shí)候 如果時(shí)間片結(jié)束 就會(huì)跳出該結(jié)果 當(dāng)該線程再次被份分配到時(shí)間片后。會(huì)從斷掉的地方繼續(xù)執(zhí)行查看全部
舉報(bào)
0/150
提交
取消