### 線程知識點歸納,后續(xù)更新
1. 后臺線程:設置Thread.setDaemon(true)就是后臺線程了。
前臺線程:不設置。
如果沒有前臺線程了,那么整個程序都會結束。
2. 線程的合并:Thread.join(10000);
將子線程加入主線程,兩個線程合并10秒后分開。
3. 線程同步:
a. synchronized(Object){ 代碼塊 } Object必須是同一個對象才能進行同步。
b. 在方法前面加synchronized。new Thread(Object).start();start只是準備運行,處于準備狀態(tài),并不是確定開始執(zhí)行。
4. 實現(xiàn)代碼塊與方法的同步:synchronized(Object),
Object為Object.class(兩個為同一個對象監(jiān)視器)
死鎖:你等我,我等你
5. 線程間的通信:(要是同一個對象的waitnotifynotifyAll)
1. wait:告訴當前線程放棄監(jiān)視器并進入睡眠狀態(tài),直到其他線程進入同一監(jiān)視器并調用notify為止。
2. notify:喚醒同一對象監(jiān)視器中調用wait的第一個線程。用于類似飯館有一個空位后通知所有等候就餐的顧客中的第一位可以入座的情況。
3. notifyAll:喚醒同一對象監(jiān)視器中調用wait的所有線程,具有最高優(yōu)先級的線程首先被喚醒并執(zhí)行。
6. 生命周期:start-->runnable-->running-->run()方法完成
7. 方法:
1. suspend(阻塞),resumen(恢復線程執(zhí)行),stop()
2. 以上方法容易造成死鎖。最好用一個變量去控制它的生命周期。
8. sleep方法:讓當前線程休眠。自己擁有鎖,不讓出。
1. 自己過一段時間可以醒。
2. 而wait方法,是在等待,讓出了鎖,需要別人叫醒。
3. yield方法:讓出cpu,給其他線程執(zhí)行機會。
9. 線程的優(yōu)先級(Priority):默認為5。