java線程使用總結

### 線程知識點歸納,后續(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。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容