多线程NSThread

一些基础知识

    //线程就是进程中并发执行的一些代码片段
    /*
     网络传输方式
     同步:所有任务放到一个线程中完成,只要当前任务没有完成  那么下一个任务就处于堵塞的状态
     异步:多个任务放到多个线程中完成  即使当前任务没有完成   那么也不会影响到其他任务的执行
     
     //数据传输方式
     串行:一个线程中只有当前任务完成后  下一个任务才开始执行
     并发:多个线程完成不同的任务 互不干扰
     
     一般的时候   都是说主线程同步异步,工作线程串行并发
     */
    /*
     线程种类
     1、主线程   UI MainThread  平时写的所有代码都是在主线程中进行的,主线程是系统自动生成的,不能修改
     2、工作线程  worker Thread 又称为次线程   secondary Thread   防止主线程出现假死状态  同时也能提高数据的请求和加载速率
     
     
     
     */

-(void)buttonClick:(id)sender
{
    UIButton * button = (UIButton *)sender;
    if (button.tag == 1) {
        NSNumber * num = [NSNumber numberWithInt:100];
        //创建工作线程
        //<1>
        //只需要创建线程  不需要手动开启线程
        //线程对象只要被创建   就会自动执行任务
        [NSThread detachNewThreadSelector:@selector(threadMain1:) toTarget:self withObject:num];
    }else
    {
        NSNumber * num = [NSNumber numberWithInt:100];
        //创建线程
        //<2>
        NSThread * thread = [[NSThread alloc]initWithTarget:self selector:@selector(threadMain2:) object:num];
        //必须手动开启线程
        [thread start];
    }

}
-(void)threadMain1:(NSNumber *)num
{
    NSLog(@"线程1开始");
    for (int i = 0 ; i<[num intValue]; i++) {
        NSLog(@"线程1 i=%d",i);
        //控制线程的执行时间
        [NSThread sleepForTimeInterval:0.1];
    }
    //线程结束  也就是线程退出
    NSLog(@"线程1结束");
}
-(void)threadMain2:(NSNumber *)num
{
    NSLog(@"线程2开始");
    for (int i = 0 ; i<[num intValue]; i++) {
        NSLog(@"i=%d",i);
        [NSThread sleepForTimeInterval:1];
    }
    NSLog(@"线程2结束");
}
 
原文地址:https://www.cnblogs.com/huoxingdeguoguo/p/4678140.html