NSThread

- (void)creatNSThread{
    //1、创建线程后启动线程
    NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(run) object:nil];
    [thread start];
    
    
    //2、创建线程后自动启动线程
    [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
    
    //3、隐式创建并启动线程
    [self performSelectorInBackground:@selector(run) withObject:nil];
    
    /*
     + (NSThread *)mainThread; //获得主线程
     - (BOOL)isMainThread; //判断是否为主线程(对象方法)
     + (BOOL)isMainThread; //判断是否为主线程(类方法)
     NSThread *current = [NSThread currentThread]; //获得当前线程
     - (void)setName:(NSString *)n; //线程的名字——setter方法
     - (NSString *)name; //线程的名字——getter方法
    
     - (void)start;  //启动线程方法
     //阻塞(暂停)线程方法
     + (void)sleepUntilDate:(NSDate *)date;
     + (void)sleepForTimeInterval:(NSTimeInterval)ti;
    
     + (void)exit;  //强制停止线程  线程进入死亡状态
     
     // 在主线程上执行操作
     - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
     - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray<NSString *> *)array;
     // equivalent to the first method with kCFRunLoopCommonModes
     
     // 在指定线程上执行操作
     - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array;
     - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;
     
     // 在当前线程上执行操作,调用 NSObject 的 performSelector:相关方法
     - (id)performSelector:(SEL)aSelector;
     - (id)performSelector:(SEL)aSelector withObject:(id)object;
     - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
     
     //performSelectorOnMainThread
     */
   
    
    
}

- (void)run{
    NSLog(@"线程运行啦==%@", [NSThread currentThread]);
}

  线程状态转换

原文地址:https://www.cnblogs.com/whongs/p/9149945.html