1、NSThread
NSThread是封装程度最小最轻量级的,使用更灵活,但是需要手动管理线程的生命周期、线程同步和线程加锁等,线程开销大;
[NSThread isMultiThreaded];//是否开启了多线程
[NSThread mainThread];//获取主线程
[NSThread currentThread];//获取当前线程
[NSThread sleepForTimeInterval:3];//线程睡眠3s
2、GCD
同步异步决定是否具备开启线程的能力
串行并行决定代码执行的先后顺序
dispatch_sync//同步
dispatch_async//异步
dispatch_queue_t//主要分为两种,串行、并行
dispatch_queue_create("concurrent_queue",DISPATCH_QUEUE_CONCURRENT);//并发
dispatch_queue_create("serial_queue", DISPATCH_QUEUE_SERIAL)//串行
dispatch_once_t//代码只会执行一次,用于单例
dispatch_after;//延迟操作
dispatch_get_main_queue;//回到主线程操作
3、NSOperation
NSOperation是基于GCD封装的,比GCD可控性更强;可以加入操作依赖(
addDependency
)、设置操作队列最大可并发执行的操作个数(setMaxConcurrentOperationCount
)、取消操作(cancel
)等,需要使用两个它的实体子类:NSBlockOperation和NSInvocationOperation,或者继承NSOperation自定义子类;NSBlockOperation和NSInvocationOperation用法主要区别是:前者执行指定的方法,后者执行代码块,相对来说后者更加灵活易用。NSOperation操作配置完成后便可调用start函数在当前线程执行,如果要异步执行避免阻塞当前线程则可以加入NSOperationQueue异步操作。
网友评论