美文网首页
iOS 多线程(一)---> NSThread

iOS 多线程(一)---> NSThread

作者: 精彩飘飞 | 来源:发表于2018-03-19 16:42 被阅读7次

NSThread的使用

No.1:NSThread创建线程

NSThread有三种创建方式:

  • init方式
  • detachNewThreadSelector创建好之后自动启动
  • performSelectorInBackground创建好之后也是直接启动
/** 方法一,需要start */
NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething1:) object:@"NSThread1"];
// 线程加入线程池等待CPU调度,时间很快,几乎是立刻执行
[thread1 start];
 
/** 方法二,创建好之后自动启动 */
[NSThread detachNewThreadSelector:@selector(doSomething2:) toTarget:self withObject:@"NSThread2"];
 
/** 方法三,隐式创建,直接启动 */
[self performSelectorInBackground:@selector(doSomething3:) withObject:@"NSThread3"];
 
- (void)doSomething1:(NSObject *)object {
    // 传递过来的参数
    NSLog(@"%@",object);
    NSLog(@"doSomething1:%@",[NSThread currentThread]);
}
 
- (void)doSomething2:(NSObject *)object {
    NSLog(@"%@",object);
    NSLog(@"doSomething2:%@",[NSThread currentThread]);
}
 
- (void)doSomething3:(NSObject *)object {
    NSLog(@"%@",object);
    NSLog(@"doSomething3:%@",[NSThread currentThread]);
}

No.2:NSThread的类方法

  • 返回当前线程
// 当前线程
[NSThread currentThread];
NSLog(@"%@",[NSThread currentThread]);
 
// 如果number=1,则表示在主线程,否则是子线程
打印结果:{number = 1, name = main}
  • 阻塞休眠
//休眠多久
[NSThread sleepForTimeInterval:5];
//休眠到指定时间
[NSThread sleepUntilDate:[NSDate date]];
  • 类方法补充
//退出线程
[NSThread exit];
//判断当前线程是否为主线程
[NSThread isMainThread];
//判断当前线程是否是多线程
[NSThread isMultiThreaded];
//主线程的对象
NSThread *mainThread = [NSThread mainThread];

No.3:NSThread的一些属性

//线程是否在执行
thread.isExecuting;
//线程是否被取消
thread.isCancelled;
//线程是否完成
thread.isFinished;
//是否是主线程
thread.isMainThread;
//线程的优先级,取值范围0.0到1.0,默认优先级0.5,1.0表示最高优先级,优先级高,CPU调度的频率高
 thread.threadPriority;
至此,NSThread的相关内容叙述完毕,如果不足,请批评指正 , 谢谢 !

相关文章

网友评论

      本文标题:iOS 多线程(一)---> NSThread

      本文链接:https://www.haomeiwen.com/subject/rsdrqftx.html