在IOS中为什么使用多线程及多线程实现的三种方法

2020-01-14 17:32:01王振洲

在多线程简介中,我已经说明过了,为了提高界面的流畅度以及用户体验。我们务必要把耗时的操作放到别的线程中去执行,千万不要阻塞主线程。

下面小编给大家带来三种ios多线程编程方法:

NSThread
Grand Centeral Dispatch(GCD)
NSOperation和NSOperationQueue

1.NSThread

这是最轻量级的多线程的方法,使用起来最直观的多线程编程方法。但是因为需要自己管理线程的生命周期,线程同步。经常使用NSThread进行调试,在实际项目中不推荐使用。


//获取当前线程
NSThread *current = [NSThread currentThread];
//获取主线程
NSThread *main = [NSThread mainThread];
NSLog(@"当前线程 --- %@",current);
NSLog(@"主线程 --- %@",main);

控制台输出结果:

2015-11-22 22:30:29.572 多线程demo[1289:2925847] 当前线程 --- <NSThread: 0x7fc0e1401dc0>{number = 1, name = main}
2015-11-22 22:30:29.572 多线程demo[1289:2925847] 主线程 --- <NSThread: 0x7fc0e1401dc0>{number = 1, name = main}

从结果我们看出当前的线程就是主线程, number 相当于线程的id, name 是线程的名称,主线程的number就是1

阻塞线程:


//阻塞线程3秒
[NSThread sleepForTimeInterval:3];
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]];

2.GCD(Grand Central Dispatch)

GCD是基于C语言底层API实现的一套多线程并发机制,非常的灵活方便,在实际的开发中使用很广泛。

简单来说CGD就是把 操作 放在 队列 中去执行。

你只需定义好操作和队列就可以了,不需要直接控制线程的创建和销毁,线程的生命周期由队列来管理。

队列:负责操作的调度和执行,有先进先出(FIFO)的特点。也就是说先加入队列的操作先执行,后加入的后执行。

队列有两种:

串行队列:

队列中的操作只会按顺序执行,你可以想象成单窗口排队。

在IOS中为什么使用多线程及多线程实现的三种方法