第一种:NStread

 1 - (void)viewDidLoad {
 2 [super viewDidLoad];
 3 // Do any additional setup after loading the view, typically from a nib.
 4 
 5 /**
 6 * 实现多线程方式之一:NSThread
 7 */
 8 /*
 9 // 获取当前线程
10 NSLog(@"current = %@", [NSThread currentThread]);
11 // 获取主线程
12 NSLog(@"msinThread = %@", [NSThread mainThread]);
13 // 获取当前线程是否为主线程
14 NSLog(@"isMainThread = %d", [NSThread isMainThread]);
15 */
16 #pragma mark - NSThread 手动开辟子线程
17 // 第一个参数:target
18 // 第二个参数:方法
19 // 第三个参数:传参
20 // NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadAction) object:nil];
21 // 让多线程启动
22 // [thread start];
23 
24 // 使用NSThread和NSObject实现的开辟线程,系统会自动释放,关不关都行
25 // ( *** 了解 ) 结束线程的两种方式
26 // 取消线程 第一种方式
27 // [thread cancel]; // 不是真正取消,而是给线程发送有个信号,通过这个信号进行取消
28 // 直接退出线程 第二种方式
29 // [NSThread exit];
30 
31 #pragma mark - NSTread自动开辟子线程
32 // 线程自动开启
33 // 把手动开启的target和select两个参数顺序颠倒
34 // [NSThread detachNewThreadSelector:@selector(threadAction) toTarget:self withObject:nil];
35 }

原文地址:https://www.cnblogs.com/crazygeek/p/5503947.html