天天看點

iOS開發多線程篇—線程的狀态

一、簡單介紹

線程的建立:

self.thread=[[nsthread alloc]initwithtarget:self selector:@selector(test) object:nil];

說明:建立線程有多種方式,這裡不做過多的介紹。

iOS開發多線程篇—線程的狀态

線程的開啟:

[self.thread start];

iOS開發多線程篇—線程的狀态

線程的運作和阻塞:

(1)設定線程阻塞1,阻塞2秒

[nsthread sleepfortimeinterval:2.0];

(2)第二種設定線程阻塞2,以目前時間為基準阻塞4秒

nsdate *date=[nsdate datewithtimeintervalsincenow:4.0];

[nsthread sleepuntildate:date];

iOS開發多線程篇—線程的狀态

線程處理阻塞狀态時在記憶體中的表現情況:(線程被移出可排程線程池,此時不可排程)

iOS開發多線程篇—線程的狀态

線程的死亡:

當線程的任務結束,發生異常,或者是強制退出這三種情況會導緻線程的死亡。

iOS開發多線程篇—線程的狀态

線程死亡後,線程對象從記憶體中移除。

iOS開發多線程篇—線程的狀态

二、代碼示例

代碼示例1:

iOS開發多線程篇—線程的狀态
iOS開發多線程篇—線程的狀态

列印檢視:

iOS開發多線程篇—線程的狀态

代碼示例2(退出線程):

iOS開發多線程篇—線程的狀态
iOS開發多線程篇—線程的狀态

列印示例:

iOS開發多線程篇—線程的狀态

注意:人死不能複生,線程死了也不能複生(重新開啟),如果線上程死亡之後,再次點選螢幕嘗試重新開啟線程,則程式會挂。

iOS開發多線程篇—線程的狀态

繼續閱讀