-
創(chuàng)建:新建一個(gè)線程對(duì)象,如:Thread threa d= new Thread(); 就緒:創(chuàng)建了線程對(duì)象后,調(diào)用了線程的start()方法(注意:此時(shí)線程只是進(jìn)入了線程隊(duì)列,等待獲取CPU服務(wù),具備了運(yùn)行的條件,但并不一定已經(jīng)開始運(yùn)行了) 運(yùn)行:處于就緒狀態(tài)的線程,一旦獲取了CPU資源,便進(jìn)入到運(yùn)行狀態(tài),開始執(zhí)行run()方法里面的邏輯 終止:線程的run()方法執(zhí)行完畢,或者線程調(diào)用了stop()方法,線程便進(jìn)入了終止?fàn)顟B(tài) 阻塞:一個(gè)正在執(zhí)行的線程在某些情況下,由于某些原因而暫時(shí)讓出了CPU資源,暫停了自己的執(zhí)行,便進(jìn)入了阻塞狀態(tài),如調(diào)用了sleep()方法(當(dāng)sleep()方法的timeout結(jié)束,阻塞解除,線程重新回到就緒狀態(tài),等待CPU資源)查看全部
-
Runnable適合多線程處理同一資源。查看全部
-
調(diào)用start()只是進(jìn)入了線程的等待隊(duì)列,并不一定開始運(yùn)行了查看全部
-
jmap.exe 用來生成堆快照的 jstat.exe 監(jiān)測(cè)虛擬機(jī)運(yùn)行狀態(tài)的,內(nèi)存加載情況,鎖持有情況 jstack tid,nid:幫我們獲得cpu占有率很高的線程 -l:可以獲得額外的鎖信息 prio:代表優(yōu)先級(jí) 線程狀態(tài): New線程創(chuàng)建;Runnable即將或正在運(yùn)行的線程,Terminated對(duì)應(yīng)線程終止查看全部
-
守護(hù)線程 設(shè)置守護(hù)線程Thread.setDaemon(true) 注意事項(xiàng): setDaemon(true)必須在start()方法之前調(diào)用,否則會(huì)拋出IllegalThreadStateException異常 在守護(hù)線程中產(chǎn)生的新線程也是守護(hù)線程 不是所有的任務(wù)都可以分配給守護(hù)線程來執(zhí)行,比如讀寫操作或者計(jì)算邏輯查看全部
-
線程的生命周期 創(chuàng)建:新建一個(gè)線程對(duì)象,如:Thread threa d= new Thread(); 就緒:創(chuàng)建了線程對(duì)象后,調(diào)用了線程的start()方法(注意:此時(shí)線程只是進(jìn)入了線程隊(duì)列,等待獲取CPU服務(wù),具備了運(yùn)行的條件,但并不一定已經(jīng)開始運(yùn)行了) 運(yùn)行:處于就緒狀態(tài)的線程,一旦獲取了CPU資源,便進(jìn)入到運(yùn)行狀態(tài),開始執(zhí)行run()方法里面的邏輯 終止:線程的run()方法執(zhí)行完畢,或者線程調(diào)用了stop()方法(已淘汰),線程便進(jìn)入了終止?fàn)顟B(tài) 阻塞:一個(gè)正在執(zhí)行的線程在某些情況下,由于某些原因而暫時(shí)讓出了CPU資源,暫停了自己的執(zhí)行,便進(jìn)入了阻塞狀態(tài),如調(diào)用了sleep()方法(當(dāng)sleep()方法的timeout結(jié)束,阻塞解除,線程重新回到就緒狀態(tài),等待CPU資源)查看全部
-
兩種方式的比較: Runnable可以避免Thread由于Java單繼承特性帶來的缺陷 Runnable的代碼可以被多個(gè)線程(Thread實(shí)例)共享,適合于多個(gè)線程處理同一資源的情況。查看全部
-
守護(hù)線程三點(diǎn)查看全部
-
守護(hù)線程查看全部
-
創(chuàng)建:新建一個(gè)線程對(duì)象,如:Thread threa d= new Thread(); 就緒:創(chuàng)建了線程對(duì)象后,調(diào)用了線程的start()方法(注意:此時(shí)線程只是進(jìn)入了線程隊(duì)列,等待獲取CPU服務(wù),具備了運(yùn)行的條件,但并不一定已經(jīng)開始運(yùn)行了) 運(yùn)行:處于就緒狀態(tài)的線程,一旦獲取了CPU資源,便進(jìn)入到運(yùn)行狀態(tài),開始執(zhí)行run()方法里面的邏輯 終止:線程的run()方法執(zhí)行完畢,或者線程調(diào)用了stop()方法,線程便進(jìn)入了終止?fàn)顟B(tài) 阻塞:一個(gè)正在執(zhí)行的線程在某些情況下,由于某些原因而暫時(shí)讓出了CPU資源,暫停了自己的執(zhí)行,便進(jìn)入了阻塞狀態(tài),如調(diào)用了sleep()方法(當(dāng)sleep()方法的timeout結(jié)束,阻塞解除,線程重新回到就緒狀態(tài),等待CPU資源)查看全部
-
1.class MyThread extends Thread類,Override run()方法,然后直接new MyThread() , start() 2.class MyThread implements Runnable接口,實(shí)現(xiàn)run()方法,然后MyThread作為參數(shù)傳遞到Thread類中 new Thread(new MyThread()),-->start() 同一個(gè)Runnable對(duì)象作為參數(shù)同時(shí)傳給三個(gè)Thread線程,所以ticketCount 在線程間是共享的。; 原來runnable是用來給線程共享的,從而實(shí)現(xiàn)多線程并發(fā)處理查看全部
-
線程創(chuàng)建的兩種方法 1)Class MyThread1 extends Thread{ @Override public void run() {....} } MyThread1 th=new MyThread1();//創(chuàng)建線程 th.start();//啟動(dòng)線程 ---------------------------------- 2)Class MyThread implements Runnable{ @Override public void run(){} } MyThread mt=new MyThread();//多出來 Thread thread=new Thread(mt);//創(chuàng)建線程 thread.start();//啟動(dòng)線程查看全部
-
線程的生命周期 創(chuàng)建:新建一個(gè)線程對(duì)象,如:Thread threa d= new Thread(); 就緒:創(chuàng)建了線程對(duì)象后,調(diào)用了線程的start()方法(注意:此時(shí)線程只是進(jìn)入了線程隊(duì)列,等待獲取CPU服務(wù),具備了運(yùn)行的條件,但并不一定已經(jīng)開始運(yùn)行了) 運(yùn)行:處于就緒狀態(tài)的線程,一旦獲取了CPU資源,便進(jìn)入到運(yùn)行狀態(tài),開始執(zhí)行run()方法里面的邏輯 終止:線程的run()方法執(zhí)行完畢,或者線程調(diào)用了stop()方法,線程便進(jìn)入了終止?fàn)顟B(tài) 阻塞:一個(gè)正在執(zhí)行的線程在某些情況下,由于某些原因而暫時(shí)讓出了CPU資源,暫停了自己的執(zhí)行,便進(jìn)入了阻塞狀態(tài),如調(diào)用了sleep()方法(當(dāng)sleep()方法的timeout結(jié)束,阻塞解除,線程重新回到就緒狀態(tài),等待CPU資源)查看全部
-
線程的生命周期查看全部
-
jstack查看全部
舉報(bào)
0/150
提交
取消