Thread :是三种方法里面相对轻量级的,但需要管理线程的生命周期、同步、加锁问题,这会导致一定的性能开销
一:创建线程
方法1:
// 初始化线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 设置线程的优先级(0.0 - 1.0,1.0最高级)
thread.threadPriority = 1;
// 开启线程
[thread start];
方法2:
[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
//用静态方法创建线程 调用完毕后,会马上创建并开启新线程
二、获取当前线程
NSThread *current = [NSThread currentThread];
三、获取主线程
NSThread *main = [NSThread mainThread];
四、暂停当前线程
// 暂停2s
[NSThread sleepForTimeInterval:2];
// 或者
NSDate *date = [NSDate dateWithTimeInterval:2 sinceDate:[NSDate date]];
[NSThread sleepUntilDate:date];
五:多线程安全NSLock
多线程内使用加锁操作使得线程更安全
NSLock *lock = [[NSLock alloc] init];
[lock lock];
//执行加锁任务
[lock unlock];
六:优缺点:
1.优点:NSThread比其他两种多线程方案较轻量级,更直观地控制线程对象
2.缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销
原文:http://www.cnblogs.com/ai-nuonuo/p/5670289.html