iOS中多线程的实现方案:

技术 语言 线程生命周期 使用频率
pthread C 程序员自行管理 几乎不用
NSthread OC 程序员自行管理 偶尔使用
GCD C 自动管理 经常使用
NSOperation OC 自动管理 经常使用

线程的状态

NSThread的创建方式:

  1. //创建线程方式一
  2. NSThread *threadOne = [[NSThread alloc] initWithTarget:self selector:@selector(testAction) object:nil];
  3. //给线程命名
  4. threadOne.name = @"threadOne";
  5. //启动线程,在新开的线程执行testAction方法
  6. [threadOne start];
  7.  
  8. //创建线程方式二,并且会自动启动
  9. [NSThread detachNewThreadSelector:@selector(testAction) toTarget:self withObject:nil];
  10.  
  11. //创建线程方式三,隐式创建方式,自动启动
  12. [self performSelectorInBackground:@selector(testAction) withObject:nil];

调用的方法

  1. - (void)testAction
  2. {
  3. for (int i = 0; i < 3; i++)
  4. {
  5. NSLog(@"i = %d,当前线程 = %@",i,[NSThread currentThread]);
  6. }
  7. }

结果:可以看到有3条线程并发执行

线程的属性:

  1. //创建一个线程
  2. NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(testAction) object:nil];
  3. //线程名字
  4. thread.name = @"wl";
  5. //线程优先级,一般情况不设置,默认0.5,数值范围0-1,数值越大优先级越高
  6. thread.threadPriority = 0.5;

常用方法,这些都是类方法,相对于这段代码所在的线程进行操作

  1. //获得主线程
  2. [NSThread mainThread];
  3. //判断是否为主线程,返回一个BOOL值
  4. BOOL isMainThread = [NSThread isMainThread];
  5. //判断是否为多线程,返回一个BOOL值
  6. BOOL isMultiThreaded = [NSThread isMultiThreaded];
  7. //把线程从可调度线程池中移除2s(阻塞线程)
  8. [NSThread sleepForTimeInterval:2];
  9. //把线程从可调度线程池中移除直到一个时间点(阻塞线程)
  10. [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];
  11. //停止线程,线程死亡,这个线程就已经不存在了
  12. [NSThread exit];

多线程(一)NSThread的更多相关文章

  1. iOS开发之多线程(NSThread、NSOperation、GCD)

    整理一些多线程相关的知识. 并行 & 并发 1.并行:并行是相对于多核而言的,几个任务同时执行.2.并发:并发是相对于单核而言的,几个任务之间快速切换运行,看起来像是"同时" ...

  2. iOS开发——多线程篇——NSThread

    一.基本使用1.创建和启动线程一个NSThread对象就代表一条线程 创建.启动线程NSThread *thread = [[NSThread alloc] initWithTarget:self s ...

  3. 多线程技术 NSThread & NSOperation & GCD

    多线程:在iOS开发中,用到多线程的处理问题的时候有很多,比如异步下载数据时刷新界面等等. 引入多线程来处理问题的关键就是,基于多线程可以使界面更加流畅,防止界面假死. 界面假死:比如你单击一个按钮来 ...

  4. iOS的三种多线程技术NSThread/NSOperation/GCD

    1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的"并发"技术,使得程序员可以不再去关心 ...

  5. 多线程&NSObject&NSThread&NSOperation&GCD

    1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 2.NSOperation/NS ...

  6. iOS多线程开发--NSThread NSOperation GCD

    多线程 当用户播放音频.下载资源.进行图像处理时往往希望做这些事情的时候其他操作不会被中 断或者希望这些操作过程中更加顺畅.在单线程中一个线程只能做一件事情,一件事情处理不完另一件事就不能开始,这样势 ...

  7. 多线程(NSThread、NSOperation、GCD)编程浅谈

    一.基本概念 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动.可以理解成一个运行中的应用程序.线程:程序执行流的最小单元,线程是进程中的一个实体.同步:只能在当前线程按先后顺序依次执行 ...

  8. iOS之多线程开发NSThread、NSOperation、GCD

    原文出处: 容芳志的博客   欢迎分享原创到伯乐头条 简介iOS有三种多线程编程的技术,分别是:(一)NSThread(二)Cocoa NSOperation(三)GCD(全称:Grand Centr ...

  9. Ios开发之多线程编程——NSThread

    IOS程序在运行的时候是通过主线程来进行UI视图的更新和响应屏幕触摸事件,但是,在视图更新的时候,会有一些非常耗时的工作,这样我们会出现系统出现卡顿的现象,这是因为主线程堵塞造成的,这样会使用户体验非 ...

  10. IOS开发 多线程编程 - NSThread

    每个iOS应用程序都有个专门用来更新显示UI界面.处理用户的触摸事件的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验.一般的解决方案就是将 ...

随机推荐

  1. iOS app应用界面加载卡顿的问题

    刚发布版本,忽然发现加载界面需要3-5秒延迟,那么问题来了. 首先,发现问题: 1.看代码,基于之前版本更新都没出问题,还是比较确信不是代码中的bug,以防万一,还是仔细看了下关于界面跳转部分的代码, ...

  2. npm install --save 与 npm install --save-dev 的区别

    以npm安装msbuild为例: npm install msbuild: 会把msbuild包安装到node_modules目录中 不会修改package.json 之后运行npm install命 ...

  3. CentOS6.6图文详细安装教程(有些设置大部分教程没出现过,附带网络设置等)

    作者:Sungeek 出处:http://www.cnblogs.com/Sungeek/ 欢迎转载,也请保留这段声明.谢谢! Centos6.6 下载地址:thunder://QUFodHRwOi8 ...

  4. 第三章 用SDK编译出第一个在Linux下的软件界面

    第三章 用SDK编译出第一个在Linux下的软件界面 先创建一个工程目录“mkdir project1”,进入目录,创建main.cpp文件,编写代码如下: 代码内容暂时可以先不理解,先让程序跑起来再 ...

  5. 分享一个很好用的 日期选择控件datepicker 使用方法分享

    很多同学在做网站的时候,有时候需要用户选择日期,年月日这些的,以前我也在用一个,但是那个的界面都不太好看,于是找啊找,找啊找,找到一个好东西,就是这个,datepicker,是jquery.ui里面的 ...

  6. bootstrap响应式网页设计的9条基本原则!

    bootstrap响应式网页设计是针对多屏幕问题的一个很好的解决方案,但从印刷的视角来看有点困难.没有固定的页面尺寸,没有毫米或英寸,没有任何的物理限制,无从下手. 为了desktop和mobile单 ...

  7. PHP实现中文简体字和繁体字互转

    function convert($str, $action='S'){ if($action != 'S' && $action != 'T'){ return $str; } $s ...

  8. 关于hadoop2.4.2版本学习时遇到的问题

    问题一:namenode启动失败 描述:在初始化后hadoop后,发现datanode启动失败,namenode则可以正常启动,如果把用户换成root权限,再次启动时,则namenode和datano ...

  9. IEEE 754 浮点数的四种舍入方式

    四种舍入方向: 向最接近的可表示的值:当有两个最接近的可表示的值时首选"偶数"值:向负无穷大(向下):向正无穷大(向上)以及向0(截断). 说明:默认模式是最近舍入(Round t ...

  10. Pop Sequence (栈)

     Pop Sequence (栈) Given a stack which can keep M numbers at most. Push N numbers in the order of 1, ...