1、Sleep和Interrupt
Sleep函數阻塞當前線程一定的時間。當時間到達後,操作系統在下一個時間片按照其調度算法繼續調度執行。
Interrupt函數喚醒處於WaitSleepJoin狀態的線程。本質上,Interrupt函數向處於WaitSleepJoin狀態的線程觸發ThreadInterryptedException,如果該異常沒有被處理則會繼續向上拋出,如圖:
因此,寫多線程程序的一個最佳實踐是在線程的主函數中用try-catch塊捕獲所有可能的異常。
2、後台線程和前台線程
線程的IsBackground屬性控制線程是前台線程或者後台線程,前台線程和後台線程只有一點不同,後台線程不會阻止進行終止,如果一個進程的所有前台線程終止,CLR將結束此進程,其它的後台運行線程同時也被強行終止,而不會等待其執行完成。
3、Suspend和Resume
Suspend和Resume是已經廢棄的兩個函數,Suspend函數將線程轉換為Suspended狀態,Resume函數將線程從Suspended狀態轉換為運行狀態