—高级软件人才实作培训专家!北京传智播客教育www.itcast.cn多线程NSThreadiOS学院李明杰—高级软件人才实作培训专家!北京传智播客教育www.itcast.cn创建和启动线程一个NSThread对象就代表一条线程创建、启动线程NSThread*thread=[[NSThreadalloc]initWithTarget:selfselector:@selector(run)object:nil];[threadstart];//线程一启动,就会在线程thread中执行self的run方法主线程相关用法+(NSThread*)mainThread;//获得主线程-(BOOL)isMainThread;//是否为主线程+(BOOL)isMainThread;//是否为主线程—高级软件人才实作培训专家!北京传智播客教育www.itcast.cn其他用法获得当前线程NSThread*current=[NSThreadcurrentThread];线程的调度优先级+(double)threadPriority;+(BOOL)setThreadPriority:(double)p;-(double)threadPriority;-(BOOL)setThreadPriority:(double)p;调度优先级的取值范围是0.0~1.0,默认0.5,值越大,优先级越高线程的名字-(void)setName:(NSString*)n;-(NSString*)name;—高级软件人才实作培训专家!北京传智播客教育www.itcast.cn其他创建线程方式创建线程后自动启动线程[NSThreaddetachNewThreadSelector:@selector(run)toTarget:selfwithObject:nil];隐式创建并启动线程[selfperformSelectorInBackground:@selector(run)withObject:nil];上述2种创建线程方式的优缺点优点:简单快捷缺点:无法对线程进行更详细的设置—高级软件人才实作培训专家!北京传智播客教育www.itcast.cn内存可调度线程池线程的状态新建NewNSThread*thread=[[NSThreadalloc]initWithTarget:selfselector:@selector(run)object:nil];[threadstart];线程对象就绪Runnable运行Running其他线程对象startCPU调度当前线程CPU调度其他线程阻塞Blocked调用了sleep方法\等待同步锁sleep到时\得到同步锁线程任务执行完毕异常\强制退出死亡Dead注意:在此讨论的是橙色背景线程的状态—高级软件人才实作培训专家!北京传智播客教育www.itcast.cn控制线程状态启动线程-(void)start;//进入就绪状态->运行状态。当线程任务执行完毕,自动进入死亡状态阻塞(暂停)线程+(void)sleepUntilDate:(NSDate*)date;+(void)sleepForTimeInterval:(NSTimeInterval)ti;//进入阻塞状态强制停止线程+(void)exit;//进入死亡状态注意:一旦线程停止(死亡)了,就不能再次开启任务—高级软件人才实作培训专家!北京传智播客教育www.itcast.cn多线程的安全隐...