多线程 ——NSThread

  • 先看一下线程的状态
    多线程 ——NSThread_第1张图片
  • 学习多线程的目的:就将耗时操作放到子线程中去执行。
  • [NSThread currentThread] 获得当前方法执行的线程对象
  • 通过number来判断当前线程是主线程还是子线程
  • 提示:不要纠结这个number的值是多少
  • 只要number == 1,则代表是主线程
  • number != 1,则是子线程,这个值是由CPU决定,
  • 创建线程方法一:
- (void)threadDemo1 {
    // 创建线程 -- 仅仅是在内存中创建了一个线程对象,并没有开始执行指定方法
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(longOperation:) object:@"alloc"];

    // 开始执行
    [thread start];
}


- (void)longOperation:(id)param{
    NSLog(@"%@---%@",param,[NSThread currentThread]);
}
  • 创建线程方法二:

- (void)threadDemo2 {
    // 创建线程
    // 默认自动开启
    [NSThread detachNewThreadSelector:@selector(longOperation:) toTarget:self withObject:@"detach"];
}
  • 创建线程方法三:
- (void)threadDemo3{
    // 隐式在后台开启线程执行指定的方法。
    // 任何 NSObject对象都可以调用该方法,在后台线程中执行对应的方法
    [self performSelectorInBackground:@selector(longOperation:) withObject:@"performSelector"];
}

你可能感兴趣的:(线程)