-
就緒:創(chuàng)建了線程對象后,調(diào)用了線程的start()方法(注意:此時線程只是進(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)查看全部
-
線程的生命周期狀態(tài)轉(zhuǎn)換圖查看全部
-
class MyThread2 implements Runnable{ private int ticketsCount = 5; //一共有5張火車票 public void run() { while(ticketsCount > 0){ ticketsCount--; //當(dāng)前 線程 System.out.println(Thread.currentThread().getName() + "賣了1張票,剩余票數(shù)為:"+ticketsCount); } } } public class TicketsRunnable { public static void main(String[] args) { MyThread2 mt = new MyThread2(); //創(chuàng)建三個線程來模擬三個售票窗口 Thread th1 = new Thread(mt, "窗口1"); Thread th2 = new Thread(mt, "窗口2"); Thread th3 = new Thread(mt, "窗口3"); th1.start(); th2.start(); th3.start(); } }查看全部
-
Runnable方式可以避免Thread方式由于java單繼承特性帶來的缺陷 Runnable的代碼可以被多個線程(Thread實(shí)例)共享,適合于多個線程處理同一資源的情況查看全部
-
new查看全部
-
繼承Thread類 class MyThread extends Thread{ public void run(){ } } MyThread mt = new MyThread(); //創(chuàng)建線程 mt.start(); 實(shí)現(xiàn)Runnable接口 class MyThread implements Runnable{ public void run(){ } } MyThread mt = new MyThread(); Thread td = new Thread(mt); //創(chuàng)建線程 td.start(); //啟動線程查看全部
-
setDaemon必須在start方法以前調(diào)用查看全部
-
守護(hù)線程:運(yùn)行在后臺,一旦所有用戶線程結(jié)束,沒有需要守護(hù)的線程了,會隨JVM一起結(jié)束工作查看全部
-
獲得CPU后,才進(jìn)入運(yùn)行狀態(tài)查看全部
-
Runnable優(yōu)點(diǎn)查看全部
-
統(tǒng)一資源指的是用一個Runnable查看全部
-
jstack -l pid查看全部
-
守護(hù)線程注意事項(xiàng)查看全部
-
用戶線程: 守護(hù)線程:運(yùn)行在后臺,一旦所有用戶線程結(jié)束,沒有需要守護(hù)的線程了,會隨JVM一起結(jié)束工作 應(yīng)用:數(shù)據(jù)庫連接池中監(jiān)測線程 常見:垃圾回收線程 設(shè)置守護(hù)線程Thread.setDaemon(true)查看全部
-
線程的生命周期:創(chuàng)建(new)、就緒(start)、運(yùn)行(CPU時間片)、阻塞(讓出CPU,例如:sleep)、終止。查看全部
舉報
0/150
提交
取消