多线程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结束");

}

 

 

你可能感兴趣的:(thread)