[TwistedFate]多线程编程NSThread

多线程编程

进程,线程

  • 正在活动(运行的)一个应用程序,就是一个进程;
  • 每一个进程都至少有一个线程,主线程
  • 线程:每一个线程都是独立的,可以执行任务
  • 除了主线程,剩下的都是子线程,子线程可以有很多个 ,但是线程是耗费资源的(一般不超过5条,3条为佳)
  • 主线程操作的任务:一半时间UI界面的现实,按钮的点击,屏幕滚动,基本一切用户能看见的操作均在主线程中操作
  • 比较大的耗时操作都可以在子线程中操作 比如:下载 解压缩,读取大型数据等
  • 程序退出后会清空线程的任务

多线程的原理

CPU在工作时,同一时间只能执行一个任务,之所以可以造成多条线程一起执行任务的假象,是因为CPU高速的切换线程(调度),来达到任务一起执行的效果
多线程的优点:
1. 可以大大提高执行任务的效率
2. 可以让用户 有更好的用户体验
缺点:如果大量的开辟线程 会造成程序的卡顿 耗费过量的资源

NSThread

查看当前线程的方法

 [NSThread currentThread];

开启子线程1

//  触摸view触发方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
   //  该方法在哪个线程调用 该方法的线程就是那个线程
//    [self performSelector:@selector(download:) withObject:@"qewe"];

//  开启子线程 
//  该方法是基类提供 只要是对象都能调用
[self performSelectorInBackground:@selector(download:) withObject:@"123"];
}

开启子线程2

//  初始化 开辟一个子线程
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:@"123"];

    [thread start];

开启线程3

//  2.开辟一个子线程 不用开始自动执行
    [NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:@"123"];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值