一些基础知识
//线程就是进程中并发执行的一些代码片段
/*
网络传输方式
同步:所有任务放到一个线程中完成,只要当前任务没有完成 那么下一个任务就处于堵塞的状态
异步:多个任务放到多个线程中完成 即使当前任务没有完成 那么也不会影响到其他任务的执行
//数据传输方式
串行:一个线程中只有当前任务完成后 下一个任务才开始执行
并发:多个线程完成不同的任务 互不干扰
一般的时候 都是说主线程同步异步,工作线程串行并发
*/
/*
线程种类
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结束"); }