ViewController.m#
//
// ViewController.m
// 多線程NSOperationQueue
//
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//---------------------- NSOperationQueue 1 -----------------------
/*
//1.創(chuàng)建線程隊列(線程池)
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//會開啟一個多線程,調用block
[queue addOperationWithBlock:^{
for (int i = 0; i < 50; i ++) {
NSLog(@"子線程:%d", i);
}
}];
//主線程
for (int i = 0; i < 50; i ++) {
NSLog(@"主線程:%d", i);
}
*/
//---------------------- NSOperationQueue 2 -----------------------
//1.創(chuàng)建線程隊列(線程池)
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//2.設置線程池最大并發(fā)數
queue.maxConcurrentOperationCount = 1;
//3.創(chuàng)建2個線程
NSInvocationOperation *operation1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(thread1) object:nil];
NSInvocationOperation *operation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(thread2) object:nil];
//設置優(yōu)先級
[operation1 setQueuePriority:NSOperationQueuePriorityVeryLow];//operation1最后執(zhí)行
//4.將線程添加到線程池里
[queue addOperation:operation1];
[queue addOperation:operation2];
// //主線程
for (int i = 0; i < 300; i ++) {
NSLog(@"主線程:%d", i);
}
}
-(void)thread1 {
for (int i = 0; i < 50; i++) {
NSLog(@"thread1:%d",i);
}
}
-(void)thread2 {
for (int i = 0; i < 50; i++) {
NSLog(@"thread2:%d",i);
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end