執行緒2--多執行緒NSThread

有稜角的圓發表於2016-08-01

NSThread三種方式建立子執行緒

/**
 * NSThread建立執行緒方式1
 * 1> 先建立初始化執行緒
 * 2> start開啟執行緒
 */
-(void)creatNSThread
{
    NSThread  *thread=[[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"執行緒A"];
    //為執行緒設定一個名稱
    thread.name=@"執行緒A";
    //開啟執行緒
    [thread start];
    
    
    NSThread  *thread2=[[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"執行緒B"];
    //為執行緒設定一個名稱
    thread2.name=@"執行緒B";
    //開啟執行緒
    [thread2 start];
}


/**
 * NSThread建立執行緒方式2
 *建立完執行緒直接(自動)啟動
 */

-(void)creatNSThread2
{
    //    NSThread *thread=[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"建立完執行緒直接(自動)啟動"];
    
    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"建立完執行緒直接(自動)啟動"];
}


/**
 * NSThread建立執行緒方式3
 * 隱式建立執行緒, 並且直接(自動)啟動
 */

-(void)creatNSThread3
{
    //在後臺執行緒中執行===在子執行緒中執行
    [self performSelectorInBackground:@selector(run:) withObject:@"隱式建立"];
}



-(void)run:(NSString *)str
{
    //獲取當前執行緒
    NSThread *current=[NSThread currentThread];
    //列印輸出
    for (int i=0; i<100; i++) {
        NSLog(@"run---%@---%@%i",current,str,i);
    }
}

 

相關文章