-
針對Thread和Runnable對于同一資源處理: class MyThread extends Thread{} class MyRunnable implements Runnable{} public static void main(String[] args){ MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); MyThread t3 = new MyThread(); //注意:此時t1,t2,t3是堆內(nèi)存中實(shí)例出的三個對象,對于它們所有屬性也獨(dú)立的 MyRunnable r = new MyRunnable(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); Thread t3 = new Thread(r); //注意:t1,t2,t3雖然是堆中的三個不同對象,但是此時的r是一個,所以三個線程引用r中的資源也是共有的 } 由此可以看出:Runnable可以實(shí)現(xiàn)資源共享,而Thread資源獨(dú)立查看全部
-
兩種方式的比較: Runnable方式可以避免Thread類由于Java單繼承帶來的缺陷; Runnable的代碼可以被多個線程(Thread實(shí)例)共享,適合于多個線程處理同一資源的情況查看全部
-
創(chuàng)建線程的兩種方法查看全部
-
線程創(chuàng)建的兩種方式: 1、繼承Thread類,覆寫run()方法 2、實(shí)現(xiàn)Runnable接口,作為參數(shù)傳遞到Thread類中查看全部
-
Runnable方式可以避免Thread方式由于Java單繼承特性所帶來的缺陷 Runnable的代碼可以被多個線程(Thread實(shí)例)共享,適合于多個線程處理統(tǒng)一資源的情況查看全部
-
tid nid可以幫助找到cpu,內(nèi)存占用率很高的線程查看全部
-
jstack:主要用來生成當(dāng)前時刻線程的快照查看全部
-
守護(hù)線程:一般運(yùn)行于后臺,為其它的用戶線程(運(yùn)行在前臺,處理具體任務(wù))來服務(wù),當(dāng)所有的用戶線程都消亡,沒有可服務(wù)的對象,守護(hù)線程即會自動消亡。例如檢測服務(wù),常見例子如JAVA的垃圾回收機(jī)制。所有在守護(hù)線程里面不適合做計(jì)算以及業(yè)務(wù)邏輯的操作 創(chuàng)建方式:在線程啟動之前(調(diào)用start()方法),調(diào)用setDaemon(threadName,true)來申明這個是守護(hù)線程即可查看全部
-
test查看全部
-
創(chuàng)建:新建一個新線程對象,如Thread thd=new Thread(); 就緒:創(chuàng)建了線程對象后,調(diào)用了線程的start()方法(注意:此時線程只是進(jìn)入了線程隊(duì)列,等待獲取CPU服務(wù),具備了運(yùn)行的條件,但并不一定已經(jīng)開始運(yùn)行了). 停止:線程的run()方法執(zhí)行完畢,或者線程調(diào)用了stop()方法,線程便進(jìn)入終止?fàn)顟B(tài). 阻塞:一個正在執(zhí)行的線程在某些情況下,由于某種原因而暫時讓出了CPU資源,暫停了自己的執(zhí)行,便進(jìn)入了阻塞狀態(tài),如調(diào)用了sleep()方法查看全部
-
thread snapshot查看全部
-
setDaemon查看全部
-
.....查看全部
-
阻塞...查看全部
-
阻塞...查看全部
舉報
0/150
提交
取消