多线程(一) NSThread
OS中多线程的实现方案:
| 技术 | 语言 | 线程生命周期 | 使用频率 |
| pthread | C | 程序员自行管理 | 几乎不用 |
| NSthread | OC | 程序员自行管理 | 偶尔使用 |
| GCD | C | 自动管理 | 经常使用 |
| NSOperation | OC | 自动管理 | 经常使用 |
线程的状态

NSThread的创建方式:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//创建线程方式一NSThread *threadOne = [[NSThread alloc] initWithTarget:self selector:@selector(testAction) object:nil];//给线程命名threadOne.name = @"threadOne";//启动线程,在新开的线程执行testAction方法[threadOne start];//创建线程方式二,并且会自动启动[NSThread detachNewThreadSelector:@selector(testAction) toTarget:self withObject:nil];//创建线程方式三,隐式创建方式,自动启动[self performSelectorInBackground:@selector(testAction) withObject:nil]; |
调用的方法
|
1
2
3
4
5
6
7
|
- (void)testAction{ for (int i = 0; i < 3; i++) { NSLog(@"i = %d,当前线程 = %@",i,[NSThread currentThread]); }} |
结果:可以看到有3条线程并发执行

线程的属性:
|
1
2
3
4
5
6
|
//创建一个线程NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(testAction) object:nil];//线程名字thread.name = @"wl";//线程优先级,一般情况不设置,默认0.5,数值范围0-1,数值越大优先级越高thread.threadPriority = 0.5; |
常用方法,这些都是类方法,相对于这段代码所在的线程进行操作
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//获得主线程[NSThread mainThread];//判断是否为主线程,返回一个BOOL值BOOL isMainThread = [NSThread isMainThread];//判断是否为多线程,返回一个BOOL值BOOL isMultiThreaded = [NSThread isMultiThreaded];//把线程从可调度线程池中移除2s(阻塞线程)[NSThread sleepForTimeInterval:2];//把线程从可调度线程池中移除直到一个时间点(阻塞线程)[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];//停止线程,线程死亡,这个线程就已经不存在了[NSThread exit]; |
多线程(一) NSThread的更多相关文章
- iOS开发之多线程(NSThread、NSOperation、GCD)
整理一些多线程相关的知识. 并行 & 并发 1.并行:并行是相对于多核而言的,几个任务同时执行.2.并发:并发是相对于单核而言的,几个任务之间快速切换运行,看起来像是"同时" ...
- iOS开发——多线程篇——NSThread
一.基本使用1.创建和启动线程一个NSThread对象就代表一条线程 创建.启动线程NSThread *thread = [[NSThread alloc] initWithTarget:self s ...
- 多线程技术 NSThread & NSOperation & GCD
多线程:在iOS开发中,用到多线程的处理问题的时候有很多,比如异步下载数据时刷新界面等等. 引入多线程来处理问题的关键就是,基于多线程可以使界面更加流畅,防止界面假死. 界面假死:比如你单击一个按钮来 ...
- iOS的三种多线程技术NSThread/NSOperation/GCD
1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的"并发"技术,使得程序员可以不再去关心 ...
- 多线程&NSObject&NSThread&NSOperation&GCD
1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 2.NSOperation/NS ...
- iOS多线程开发--NSThread NSOperation GCD
多线程 当用户播放音频.下载资源.进行图像处理时往往希望做这些事情的时候其他操作不会被中 断或者希望这些操作过程中更加顺畅.在单线程中一个线程只能做一件事情,一件事情处理不完另一件事就不能开始,这样势 ...
- 多线程(NSThread、NSOperation、GCD)编程浅谈
一.基本概念 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动.可以理解成一个运行中的应用程序.线程:程序执行流的最小单元,线程是进程中的一个实体.同步:只能在当前线程按先后顺序依次执行 ...
- iOS之多线程开发NSThread、NSOperation、GCD
原文出处: 容芳志的博客 欢迎分享原创到伯乐头条 简介iOS有三种多线程编程的技术,分别是:(一)NSThread(二)Cocoa NSOperation(三)GCD(全称:Grand Centr ...
- Ios开发之多线程编程——NSThread
IOS程序在运行的时候是通过主线程来进行UI视图的更新和响应屏幕触摸事件,但是,在视图更新的时候,会有一些非常耗时的工作,这样我们会出现系统出现卡顿的现象,这是因为主线程堵塞造成的,这样会使用户体验非 ...
- IOS开发 多线程编程 - NSThread
每个iOS应用程序都有个专门用来更新显示UI界面.处理用户的触摸事件的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验.一般的解决方案就是将 ...
随机推荐
- java.sql.Timestamp类型
如果想向数据库中插入日期时间的话,可以用java.sql.Timestamp类 一个与 java.util.Date类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识 ...
- EasyMvc入门教程-入门
1.EasyMvc简介 EasyMvc主要是为了丰富asp.net core mvc控件而出现的: 它提倡简单,面向对象式开发,希望能快速开发的同时,仍然保持一定的灵活性. 2.EasyMvc初相识 ...
- 2.配置通过数据库接收SaltStack批量管理日志
2.配置通过数据库接收SaltStack批量管理日志 2016-07-04 10:02:52来源:oschina作者:eddy_linux人点击 默认情况下发送给salt minion的命令执 ...
- linux 木马
参考 http://wangzan18.blog.51cto.com/8021085/1740113 http://www.cnblogs.com/jluzhsai/p/3756280.html ( ...
- vue2.0 仿手机新闻站(三)通过 vuex 进行状态管理
1.创建 store 结构 2.main.js 引入 vuex 3. App.vue 组件使用 vuex <template> <div id="app"&g ...
- mixare的measureText方法在频繁调用时抛出“referencetable overflow max 1024”的解决方式
这几天在搞基于位置的AR应用,採用了github上两款开源项目: mixare android-argument-reality-framework 这两个项目实现机制大致同样.我选取的是androi ...
- Runtime.getRuntime().exec()----记录日志案例
Runtime.getRuntime().exec()方法主要用于运行外部的程序或命令. Runtime.getRuntime().exec共同拥有六个重载方法: 1.public Process e ...
- 17:不重复整数提取NoRepeatNum
题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述:输入一个int型整数 输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 输入例子: ...
- Spring学习十四----------Spring AOP实例
© 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...
- HDU 2242 考研路茫茫——空调教室(边双连通)
HDU 2242 考研路茫茫--空调教室 题目链接 思路:求边双连通分量.然后进行缩点,点权为双连通分支的点权之和,缩点完变成一棵树,然后在树上dfs一遍就能得出答案 代码: #include < ...