一个NSThread的对象就代表一个线程。
创建、启动线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download) object:nil];
[thread start];
//线程一启动,就会在线程调用thread中执行self的run方法。
主线程的相关用法
+ (NSThread *)mainThread; //获得主线程
- (BOOL)isMainThread; //是否为主线程
+ (BOOL)isMainThread;//是否为主线程
获得当前线程
NSThread *current = [NSThread currentThread];
线程调度的优先级
+ (double)threadPriority;
+ (BOOL)setThreadPriority:(double)p;
- (double)threadPriority;
- (BOOL)setThreadPriority:(double)p;
调度优先级的取值范围是0.0 ~ 1.0,默认值时0.5,值越大,优先级越高。
线程的名字
- (void)setName:(NSString *)n;
- (NSString *)name
创建线程后自动启动线程
[NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:@"传递参数"];
隐式创建并启动线程
[self performSelectorInBackground:@selector(download:) withObject:@"传递参数"];
以上两种创建线程的优缺点
优点:简单快捷
缺点:无法对线程进行更详细的设置。
// 睡眠5秒钟
// [NSThread sleepForTimeInterval:5];
// 3秒后的时间
// NSDate *date = [NSDate dateWithTimeIntervalSinceNow:3];
// [NSThread sleepUntilDate:date];