NSThead

作者: labi3285 | 来源:发表于2017-09-14 22:56 被阅读6次

1、线程的创建:

方式一:NSObject隐含的方法:

// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
[A performSelectorInBackground:@selector(methodInA:) withObject:obj];

方式二:快速创建,无返回值:

// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
[NSThread detachNewThreadSelector:@selector(methodInA:) toTarget:A withObject:obj];

方式三:alloc创建:

// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(aBackgroundThread:) object:obj];
[thread start];

第三种创建方式,要调用start方法,这个方法不是立即执行,而是加入进程池。

2、线程的相关参数:

thread.name = @"aThreadName";
thread.threadPriority = 0.5; // 优先级,0-1.0,默认0.5
thread.stackSize = 512 * 1024; // 线程栈大小,默认512k,最小16k
    
thread.isMainThread; // 线程是否为主线程
thread.threadDictionary; // 线程的相关信息
thread.isCancelled; // 线程是否被取消

3、线程的中途退出:

方式一:在线程外面做标记,在线程内的关键节点检测标记并退出线程:

//线程外
[thread cancel];

// 线程内
if (thread.isCancelled) {
    return;
}

方式二:在线程内执行退出:

// 线程内
[NSThread exit];

4、线程的休眠:

方式一:

// 休眠固定的秒数
[NSThread sleepForTimeInterval:someSeconds];

方式二:

// 在某个时间点唤醒
[NSThread sleepUntilDate:aDate];

注意:一个线程在自然执行结束的时候,会自动结束线程,只有中途想退出的时候才需要调用以上的方法。

相关文章

  • NSThead

    1、线程的创建: 方式一:NSObject隐含的方法: 方式二:快速创建,无返回值: 方式三:alloc创建: 第...

  • NSThead(转)

    每个iOS应用程序都有个专门用来更新显示UI界面、处理用户的触摸事件的主线程,因此不能将其他太耗时的操作放在主线程...

  • iOS-多线程

    iOS开发中常用的几种多线程方案,简单做个小结,方便日后查阅。 NSThead GCD NSOperation &...

  • iOS开发-多线程学习

    iOS开发中常用的几种多线程方案,简单做个小结,方便日后查阅。 Pthreads NSThead GCD NSOp...

  • NSThead的进阶使用和简单探讨

    概述 NSThread类是一个继承于NSObjct类的轻量级类。一个NSThread对象就代表一个线程。它需要管理...

  • iOS多线程笔记1--NSThead

    总结学习多线程做的一些笔记。API 线程间通信 杂记 1.name属性方便查找bug,调试。 2.主线程挂掉程序不...

  • 3.多线程基础(三)NSThead使用

    1.NSThread创建新线程: 创建线程之后是默认不执行的状态 创建线程设置线程的属性 2.NSThread创建...

网友评论

      本文标题:NSThead

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