1.设置最大并发数量:通过设置maxConcurrentOperationCount属性来设置,默认值是-1,不限制最大并发数量.
2.队列的挂起:设置属性suspended为YES,即可将队列挂起,也可以称为暂停
注意:
1).当前任务处于执行状态,设置队列挂起不会影响其执行,受影响的是那些还没有执行的任务
2).当队列设置为挂起状态后,可以通过修改其状态再次恢复任务
3.队列的取消
方法:-(void)cancelAllOperations,当取消任务后,任务不可恢复
注意:若任务操作时自定义NSOperation类型的话,执行完一个耗时操作后,需要加一是否取消任务的判断,再去执行另外一个耗时操作
-(void)main
{
for (int i = 0; i < 5000; i++) {
NSLog(@"--1--%@",[NSThread currentThread]);
}
if (self.cancelled) {
return;
}
for (int i = 0; i < 5000; i++) {
NSLog(@"--2--%@",[NSThread currentThread]);
}
if (self.cancelled) {
return;
}
for (int i = 0; i < 5000; i++) {
NSLog(@"--3--%@",[NSThread currentThread]);
}
if (self.cancelled) {
return;
}
for (int i = 0; i < 5000; i++) {
NSLog(@"--4--%@",[NSThread currentThread]);
}
}
//最大并发数量
-(void)concurrentCount
{
self.queue = [[NSOperationQueue alloc]init];
self.queue.maxConcurrentOperationCount = 1;
[self.queue addOperationWithBlock:^{
for (int i = 0; i < 5000; i++) {
NSLog(@"--1--%@",[NSThread currentThread]);
}
}];
[self.queue addOperationWithBlock:^{
for (int i = 0; i < 5000; i++) {
NSLog(@"--2--%@",[NSThread currentThread]);
}
}];
[self.queue addOperationWithBlock:^{
for (int i = 0; i < 5000; i++) {
NSLog(@"--3--%@",[NSThread currentThread]);
}
}];
[self.queue addOperationWithBlock:^{
for (int i = 0; i < 5000; i++) {
NSLog(@"--4--%@",[NSThread currentThread]);
}
}];
}
//挂起与取消
-(void)suspendedAndCancel
{
//挂起和恢复
if (self.queue.suspended) {
[self.queue setSuspended:NO];
}else{
[self.queue setSuspended:YES];
}
//取消
// [self.queue cancelAllOperations];
}