天天看點

線程小記

1、造成線程阻塞的方法?

阻塞線程的方法:join、yield、sleep 和Object的wait()方法

2、Java的守護程序(背景程序)?

設定線程為背景程序運作:setDaemon(true) 如果一個程序中隻有背景線程在運作,這個程序就會結束。

3、造成線程阻塞後,線程回到哪個狀态了?

通過join、yield、sleep造成線程阻塞後是回到了就緒狀态

3、哪些狀态之後是回到就緒狀态?

 a)通過join、yield、sleep造成線程阻塞後是回到了就緒狀态

 b)遇到synchronized後

 c)遇到Object的等待wait方法後

4、sleep會釋放鎖嗎?

 sleep不會釋放鎖【它會抱着鎖睡覺】

5、線程都有哪些狀态?具體是怎麼運作的?

線程有:建立、就緒、運作、阻塞、終止。5種狀态

1.通過new關鍵字建立後,進入到新生狀态

2.調用start後進入就緒狀态

3.CPU排程到本線程後,本線程開始執行。進入到運作狀态

4.運作中遇到join,yield,sleep造成阻塞,進入阻塞狀态。阻塞完成後,又回到就緒狀态

5.線程正常執行完,或者遇到異常終止後,進入死亡狀态

6、終止線程有哪幾種方法?

關于線程排程的,我推薦可以去了解下ReentrantLock 重入鎖配合Condition使用,非常不錯。 後面有時間我也會寫個重入鎖的簡單使用介紹。

繼續閱讀