NsThread学习

一 创建和启动

创建和启动(推荐使用):

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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值