NSThread 基于OC的API,使用其简单,面向对象操作。但线程周期由程序员管理。
优点:轻量级 缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销
苹果推荐是用GCD 和 NSOperation
注意: [NSThread currentThread]跟踪任务所在线程,适用于NSThread、NSOperation、GCD 使用NSThread的线程,不会自动添加autoreleasepool 线程中的自动释放池: @autoreleasepool{}自动释放池。主线程中是有自动释放池,使用NSThread 和 NSObject 不会有。如果在后台线程中创建了autoreleasepool的对象,需要使用自动释放池,否则会出现内存泄漏。当自动释放池销毁时,对池中的所有对象发送release消息,清空自动释放池。当所有的autorelease对象,在出了作用域后,会自动添加到最近一次创建的自动释放池中。
也可以通过NSPort对象实现通信
1.@synchronized(锁对象) { // 需要锁定的代码 } 2.只用一把锁,多锁是无效的
优点:能有效防止因多线程抢夺资源造成的数据安全问题 缺点:需要消耗大量的CPU资源
1.iOS经典案例 下载图片 2.算法经典案例 卖票的例子