1. 程式人生 > >ios多執行緒--NSThread

ios多執行緒--NSThread

一個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]];//阻塞執行緒 //注意:執行緒死了不能復生