iOS多线程知识(二) - NSThread

iOS多线程知识(一)-基础知识



上篇中说到了多线程创建的四种方法,在iOS中使用较多的是后面三种方法。本篇将介绍iOS多线程中NSThread的使用

一.创建和启动线程

1.NSthread有三种创建新线程的方法:

    //方法1:
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];‘
    thread.name =@"线程1";
    //开启线程
    [thread start];

    //方法2:创建线程对象, 自动开启
    [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];

    //方法3:隐式的创建分线程
    [self performSelectorInBackground:@selector(run) withObject:nil];

上述后两种创建线程方式的优缺点

  • 优点:简单快捷
  • 缺点:无法对线程进行更详细的设置

当线程绑定的方法执行完毕之后,线程对象就会被销毁。线程一旦被销毁,就不能再次重新开启。如果想再次执行run方法,必须重新创建新的线程对象

2.主线程的相关用法

// 返回主线程
+ (NSThread *)mainThread;
// 是否为主线程(类方法)
+ (BOOL)isMainThread; 
// 是否为主线程(对象方法)
- (BOOL)isMainThread;

3.其他用法

//获得当前线程
NSThread *current = [NSThread currentThread];
//线程的调度优先级
+ (double)threadPriority;
+ (BOOL)setThreadPriority:(double)p;
- (double)threadPriority;
- (BOOL)setThreadPriority:(double)p;
调度优先级的取值范围是0.0 ~ 1.0,默认0.5,值越大,优先级越高

二.多线程的安全隐患

在多线程中,一块资源可能被多个线程共享,也就是多个线程可能会访问同一块资源。此时很容易引发数据错乱数据安全问题

举例说明:

针对以上情况,需要使用互斥锁来限制
互斥锁使用格式

@synchronized(锁对象) { 需要锁定的代码 }

互斥锁的优点和缺点:

  • 优点:能有效防止由多线程抢夺资源造成的数据安全问题
  • 缺点:需要消耗大量的CPU资源

互斥锁的作用其实就是使多条线程在同一条线上按照顺序去执行,实现线程同步

三.线程间通信

在一个进程中,线程往往不是孤立存在的,多个线程之间经常要进行通信

  • 一个线程传递数据给另一个线程
  • 在一个线程执行完特定任务后,转到另一个线程继续执行任务

例如:在子线程中下载完图片之后,此时需要切换到主线程中刷新UI展示图片

线程任务切换

线程间通信常用方法:

切换到主线程上执行相关任务
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
切换到指定线程中执行相关任务
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 多线程基本概念 单核CPU,同一时间cpu只能处理1个线程,只有1个线程在执行 。多线程同时执行:是CPU快速的在...
    WeiHing阅读 732评论 1 5
  • 深入浅出iOS多线程(一)——线程的概念深入浅出iOS多线程(二)——pthraed和NSThread的使用深入浅...
    struggle3g阅读 641评论 1 2
  • 一、多线程基础 基本概念 进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且...
    AlanGe阅读 571评论 0 0
  • 进程与线程 进程:计算机操作系统分配资源的单位,是指系统中正在运行的应用程序,进程之间相互独立,运行在受保护的内存...
    三十六_阅读 394评论 1 1
  • 很多信息是不值得去看的,深处信息时代,各方面的资讯铺天盖地,大部分是无效的 炒作的无用信息,这就需要个人去筛选过...
    黄山顶上的猫阅读 395评论 0 0