NSThread是苹果官方提供的,使用起来比pthread更加面向对象,简单易用,可以直接操作线程对象。不过也需要程序员自己管理线程的生命周期(主要是创建),我们在开发的过程中偶尔使用NSThread。
先创建线程,再启动线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
[thread start]; // 线程加入线程池等待CPU调度,时间很快,几乎是立刻执行
创建线程后启动线程
[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
子线程在后台创建并启动线程
[self performSelectorInBackground:@selector(run) withObject:nil];
// 获得主线程
+ (NSThread *)mainThread;
// 判断是否为主线程(对象方法)
- (BOOL)isMainThread;
// 判断是否为主线程(类方法)
+ (BOOL)isMainThread;
// 获得当前线程
NSThread *current = [NSThread currentThread];
// 线程的名字——setter方法
- (void)setName:(NSString *)n;
// 线程的名字——getter方法
- (NSString *)name;
// 线程进入就绪状态 -> 运行状态。当线程任务执行完毕,自动进入死亡状态
- (void)start;
// 线程进入阻塞(暂停)状态
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
// 线程进入死亡状态,强制停止线程
+ (void)exit;
线程的调度优先级
+(double) threadPriority;
+(BOOL)setThreadPriority:(double) p;
-(double) threadPriority;
-(BOOL)setThreadPriority:(double) p;
调度优先级的取值范围是0.0~1.0 默认是0.5,值越大,优先级越高。