NsThread学习
2016-02-21 00:55
155 查看
一 创建和启动
创建和启动(推荐使用):
NSThread *thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(download)object:nil];thread.name =@"下载线程";
[thread
start];
参数分析:调用方法、传递参数
PS:init方法后仅仅是创建了线程对象,需要通过start方法将线程对象放入可调用线程池。一个NSThread对象代表一条线程。
其他两种常用线程的方法:
创建线程并自动启动:[NSThreaddetachNewThreadSelector:@selector(download)toTarget:selfwithObject:nil];
隐式创建线程并启动:
[selfperformSelectorInBackground:@selector(download)withObject:nil];
分析:两种方法创建线程更为快捷,但是两者方法返回都为void即没有返回线程对象,无法对线程进行一些操作。
二 线程状态
New:新建:通过init方法创建的线程对象还未进入可调度线程池。Runnable:就绪:使用start方法、线程进入可调度线程池中。或CPU调度完当前线程后,转而调度其他线程。(CPU一次只能运行一个线程。只用调度够快可以产生多线程同时运行的效果)或slepp到时,得到互斥锁。
Running:运行时:CPU调度到当前线程,线程运行。
Blocked:堵塞:在running状态调用了sleep方法,线程进入睡眠等待互斥锁。
Dead:死亡:线程执行完毕,或者异常、强制退出。PS:线程对象Dead后不能再次执行,想要再次执行需要重新创建线程。
三 线程间通信
从其他线程回到主线程:[self
performSelectorOnMainThread:@selector(mySetView:)
withObject:date
waitUntilDone:YES];
分析:
第三个参数:是否等待主线程执行完再执行自线程中接下来的内容。
从某个线程跳到其他线程:
- (void)performSelector:(SEL)aSelectoronThread:(NSThread
thrwithObject:(id)arg waitUntilDone:(BOOL)wait;
相关文章推荐
- [maya学习笔记(9)] 显示层的使用
- 大白话: JAVA反射机制
- iOS应用数据的存储的常用方式
- appcompat_v7 的一些总结问题
- 安装libpcap错误 ./pcap-dbus.c: In function ‘dbus_write’:已解决
- Maven
- 【POJ】[2349]Arctic Network
- java 基础异常使用总结
- sql常用命令
- 静态static修饰符
- Unity插件-NGUI学习笔记
- 10分钟搞懂树状数组
- [maya学习笔记(8)] 物体的复制与对齐
- objective c, category 和 protocol 中添加property
- 矩阵分解方法
- asp.net mvc 5 微信接入VB版 - 获取AccessToken
- 《敏捷软件开发》《企业应用架构模式》读后感
- 基于矩阵分解的隐因子模型
- 《Android源码设计模式》读书笔记 (9) 第9章 责任链模式
- 线程池线程数与(CPU密集型任务和I/O密集型任务)的关系