ios多執行緒--NSThread
阿新 • • 發佈:2019-02-10
一個NSThread物件就代表著一條執行緒
建立啟動執行緒
//建立執行緒
/*
第一個引數:目標物件
第二個引數:選擇器,執行緒啟動要呼叫哪個方法
第三個引數:前面方法要接收的引數(最多隻能接收一個引數,沒有則傳nil)
*/
NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"wendingding"];
//啟動執行緒
[thread start];
//執行緒只要啟動,就會線上程thread中執行self的run方法
其他兩種建立執行緒的方法:
//第二種建立執行緒的方式:分離出一條子執行緒
//特點:自動啟動執行緒,無法對執行緒進行更詳細的設定
/*
第一個引數:執行緒啟動呼叫的方法
第二個引數:目標物件
第三個引數:傳遞給呼叫方法的引數
*/
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"我是分離出來的子執行緒"];
//第三種建立執行緒的方式:後臺執行緒
//特點:自動啟動縣城,無法進行更詳細設定
[self performSelectorInBackground:@selector (run:) withObject:@"我是後臺執行緒"];
設定執行緒的屬性
//設定執行緒的名稱
thread.name = @"執行緒A";
//設定執行緒的優先順序,注意執行緒優先順序的取值範圍為0.0~1.0之間,1.0表示執行緒的優先順序最高,如果不設定該值,那麼理想狀態下預設為0.5
thread.threadPriority = 1.0;
執行緒的狀態
//執行緒的各種狀態:新建-就緒-執行-阻塞-死亡
//常用的控制執行緒狀態的方法
[NSThread exit];//退出當前執行緒
[NSThread sleepForTimeInterval:2.0];//阻塞執行緒
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];//阻塞執行緒
//注意:執行緒死了不能復生