iOS之[多线程:NSThread]
2015-11-23 00:00
459 查看
1.线程的三种状态
isExecuting:正在执行->只读 isFinished :执行完了->只读 isCancelled:已经取消->可以手动干预,调用cancel()方法 - 只是设置线程状态,并不是真正的停止当前线程
2.创建新线程
将操作添加到线程中并直接启动+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;
创建一个线程对象,然后调用start方法启动线程
- (instancetype)initWithTarget:(id)target selector:(SEL)sel object:(id)arg;
3.线程控制
3.1启动线程-(void)start;
3.2取消线程,可以在线程外部使用
-(void)cancel;
######3.3结束当前线程,写在线程内部
可以结合cancel方法进行exit
+(void)exit;
3.4睡眠
+ (void)sleepUntilDate:(NSDate *)date; //>>>睡眠到某个日时后,取消睡眠 + (void)sleepForTimeInterval:(NSTimeInterval)ti; //>>>睡眠多长时间
4.线程优先级:threadPriority
线程优先级范围:0-1每个线程默认优先级为0.5
优先级越大,只能说明被执行的几率越大,但是执行顺序还是随机的
+ (BOOL)setThreadPriority:(double)p;
5.扩展--NSObject分类扩展方法->NSObject (NSThreadPerformAdditions)
在后台执行一个操作,本质就是重新创建一个线程执行当前方法- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;
在指定的某个线程上执行一个方法
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait //modes:(NSArray<NSString *> *)array;
在主线程上执行一个方法
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait //modes:(NSArray<NSString *> *)array;
===================================================
其它线程方式:
NSOperation
http://my.oschina.net/u/2462423/blog/534277
GCD:Dispatch
http://my.oschina.net/u/2462423/blog/534159
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#实现多线程的同步方法实例分析
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- C#多线程编程之使用ReaderWriterLock类实现多用户读与单用户写同步的方法
- C#控制台下测试多线程的方法