iOS进阶指南移动开发iOS学习开发

iOS开发-多线程的一些基础知识

2016-09-15  本文已影响96人  woooooo

多线程

首先介绍一下进程和线程

进程

Paste_Image.psng

线程

多线程的原理

多线程的缺点

主线程

串行-并行-并发区别

使用多线程的优点:

使用多线程的缺点:

耗时操作建议放到子线程中(后台线程,非子线程)

多线程实现方案

打印当前线程

 NSLog(@"当前线程 : %@",[NSThread currentThread]);

打印主线程

NSLog(@"主线程 : %@",[NSThread mainThread]);

判断线程是否是主线程

BOOL isMainThread = [NSThread isMainThread];

休眠

[NSThread sleepForTimeInterval:3.0];

创建一个线程

    NSThread *thread  = [[NSThread alloc] initWithTarget:self selector:@selector(threadAction) object:nil];
    
//设置线程名    
thread.name = @"sq线程";

//设置线程优先级(The thread’s priority, which is specified by a floating point number from 0.0 to 1.0, where 1.0 is highest priority.)
thread.threadPriority = 1.0f;

//需要手动开启线程
[thread start];

通过类方法创建一个线程(不推荐,设置不了相关属性(如姓名等))

 [NSThread detachNewThreadSelector:@selector(threadAction) toTarget:self withObject:nil];

在后台执行一个方法(耗时操作)

 [self performSelectorInBackground:@selector(backgroundAction) withObject:nil];

在前台执行一个方法(如UI刷新操作需要在主线程中进行)

 [self performSelectorOnMainThread:@selector(mainAction) withObject:nil waitUntilDone:YES];
 
     //参数1:需要在主线程中执行的方法
    //参数2:传值
    //参数3:是否阻塞线程(等待执行完成后继续执行后面代码)
 

A 线程锁(比较耗资源,不建议用)

//通常用self作标签 
@synchronized (self) {}
上一篇 下一篇

猜你喜欢

热点阅读