多线程NSOperation的使用
//创建队列
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.suspended = YES;//这个suspended属性表示线程挂起 就是暂停了 设置成no表示继续执行
[queue cancelAllOperations];//取消线程
//设置最大并发操作数
queue.maxConcurrentOperationCount = 3;//表示最大同时执行3条线程 不写默认无限制 如果为1则就变成了一个串行队列一个一个的依次执行线程
//第一种创建操作的方式
NSBlockOperation *opr1 = [NSBlockOperation blockOperationWithBlock:^{
//里边些添加到线程里的相关操作
NSLog(@"--------%@",[NSThread currentThread]);
}];
//添加操作到队列中
[queue addOperation:opr1];
//第二中方式
NSInvocationOperation *opr2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(methodCustom) object:nil];
[queue addOperation:opr2];
//第三种创建方式
[queue addOperationWithBlock:^{
NSLog(@"--------%@",[NSThread currentThread]);
}];
// NSOperationQueue的依赖关系
- (void)dependExample{
//比如我创建了三个线程 必须要前两个执行完再执行第三个线程
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//线程1
NSBlockOperation *opr1 = [NSBlockOperation blockOperationWithBlock:^{
//执行线程内操作
}];
//线程1
NSBlockOperation *opr2 = [NSBlockOperation blockOperationWithBlock:^{
//执行线程内操作
}];
//线程1
NSBlockOperation *opr3 = [NSBlockOperation blockOperationWithBlock:^{
//执行线程内操作
//执行完以后如果回到主线程刷新ui
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//刷新UI的操作
}];
}];
//添加依赖关系
[opr3 addDependency:opr1];
[opr3 addDependency:opr2];
//添加线程到队列
[queue addOperation:opr1];
[queue addOperation:opr2];
[queue addOperation:opr3];
}