-
111111111111
查看全部 -
Runnable的優(yōu)勢
查看全部 -
JAVA線程有兩類
用戶線程;守護(hù)線程
守護(hù)線程:運(yùn)行在后臺(tái),為其他前臺(tái)線程服務(wù)
特點(diǎn):一旦所有的用戶線程都結(jié)束運(yùn)行,守護(hù)先會(huì)隨JVM一起結(jié)束工作
最常見的守護(hù)線程:垃圾回收線程
應(yīng)用:數(shù)據(jù)庫連接池中的監(jiān)測線程
????????????JVM虛擬機(jī)啟動(dòng)后的監(jiān)測線程
Thread 類的 setDaemon方法設(shè)置為true設(shè)置守護(hù)線程
setDaemon必須在start()方法前調(diào)用
守護(hù)線程中產(chǎn)生的新線程也是守護(hù)線程
不是所有的任務(wù)都可以分配給守護(hù)線程來執(zhí)行,比如讀寫操作或者計(jì)算邏輯;
查看全部 -
Thread thread = new Thread(daemonThread);
thread.setDaemon(true);//設(shè)置線程為守護(hù)線程
查看全部 -
線程的生命周期
查看全部 -
線程生命周期之阻塞狀態(tài),阻塞狀態(tài)被解除后,又會(huì)進(jìn)入就緒狀態(tài)等待獲取cpu
查看全部 -
線程生命周期之運(yùn)行狀態(tài)
查看全部 -
線程生命周期之就緒狀態(tài)
查看全部 -
兩種方式比較
查看全部 -
兩種線程的創(chuàng)建方式
查看全部 -
jstack
作用:生成JVM當(dāng)前時(shí)刻線程的快照(threaddump,即當(dāng)前進(jìn)程中所有線程的信息)
目的:幫助定位程序問題出現(xiàn)的原因,如長時(shí)間停頓、CPU占用率過高等
查看全部 -
Java線程有兩類
用戶線程:運(yùn)行在前臺(tái),執(zhí)行具體的任務(wù)
程序的主線程、連接網(wǎng)絡(luò)的子線程等都是用戶線程
守護(hù)線程:運(yùn)行在后臺(tái),為其他前臺(tái)線程服務(wù)
特點(diǎn):一旦所有用戶線程都結(jié)束運(yùn)行,守護(hù)線程會(huì)隨JVM一起結(jié)束工作
應(yīng)用:數(shù)據(jù)庫連接池中的監(jiān)測線程?
? ? ? ? ? JVM虛擬機(jī)啟動(dòng)后的監(jiān)測線程
最常見的守護(hù)線程:垃圾回收線程
可以通過調(diào)用Thread類的setDaemon(true)方法來設(shè)當(dāng)前線程為守護(hù)線程
注意:setDaemon(true)方法必須在start()方法之前調(diào)用,否則會(huì)拋出IllegalThreadStateException異常
在守護(hù)線程中產(chǎn)生的新線程也是守護(hù)線程
不是所有的任務(wù)都可以分配給守護(hù)線程來執(zhí)行,比如讀寫操作或者計(jì)算邏輯
查看全部 -
線程的生命周期
創(chuàng)建:創(chuàng)建一個(gè)Thread對(duì)象
就緒:創(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()、join()、wait()方法
線程從阻塞狀態(tài)解除后重新進(jìn)入就緒狀態(tài)。
查看全部 -
使用同一個(gè)Runnable實(shí)現(xiàn)類對(duì)象,創(chuàng)建線程可以實(shí)現(xiàn)線程之間的資源共享
線程執(zhí)行時(shí)機(jī)不能確定,線程start()之后不一定能立即獲得CPU時(shí)間片,獲得CPU資源后也會(huì)被其他線程搶占CPU資源,導(dǎo)致每次執(zhí)行結(jié)果不同。
查看全部 -
Thread和Runnable兩種方式比較
Runnable方式可以避免Thread方式由于Java單繼承特性帶來的缺陷
Runnable的代碼可以被多個(gè)線程(Thread實(shí)例)共享,適合于多個(gè)線程處理同一資源的情況
查看全部
舉報(bào)