//第一种方式 手动创建并启动 NSThread *t = [[NSThread alloc] initWithTarget:self selector:@selector(method) object:nil]; [t start]; //第二种方式 类方法 [NSThread detachNewThreadSelector:@selector(method) toTarget:self withObject:nil]; //第三种方式 类方法 [self performSelectorInBackground:@selector(method) withObject:nil]; //第四种方式 block 语法 NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init]; //会开启一个多线程,调用block [operationQueue addOperationWithBlock:^{ for (int i=0; i<50; i++) { NSLog(@"多线程:%d", i); } }]; //第五种 线程队列(线程池) NSOperationQueue *operationQueue2 = [[NSOperationQueue alloc] init]; //相当于一个线程池,里面可以放很多线程,这个线程池管理多个线程的调度,可以给线程设置优先级,并发数 operationQueue2.maxConcurrentOperationCount = 1; //设置最大并发数量(并发=同时进行) //创建线程 NSInvocationOperation *operation1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(thread1) object:nil]; //设置线程的优先级 [operation1 setQueuePriority:NSOperationQueuePriorityVeryLow]; NSInvocationOperation *operation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(thread1) object:nil]; [operation2 setQueuePriority:NSOperationQueuePriorityVeryHigh]; //将线程添加到线程池 [operationQueue2 addOperation:operation1]; [operationQueue2 addOperation:operation2]; //----------------------回到主线程-------------------------------- //在多线程中可能加载数据,加载完了之后要刷新ui, ui必须在主线程上面操作,在多线程的方法中这样调用 [self performSelectorOnMainThread:@selector(thread1) withObject:nil waitUntilDone:YES]; //-----------------第六种线程的使用方式-------------- //这个函数是C的函数,字符串test也要用C里面的字符串,是不带@符号的 dispatch_queue_t queue = dispatch_queue_create("test", NULL); dispatch_async(queue, ^{ for (int i=0; i<50; i++) { NSLog(@"多线程:%d", i); } //回到主线程执行 dispatch_async(dispatch_get_main_queue(), ^{ if ([NSThread isMainThread]) { NSLog(@"是主线程"); } }); });
-(void)thread1 { //这里是开启了一个新的线程,所以新的线程跟主线程脱离关系了,这个里面的内存管理,我们需要自己创建一个自动释放池 //创建自动释放池 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog(@"执行多线程"); [pool release]; }
相关推荐
ios多线程开发的常用四种方式和基本使用,pthread、NSThread、NSOperation\NSOperationQueue、GCD
iOS线程同步方案,包括各种互斥锁,自旋锁,递归锁等深度解析!!!!
本实例写了一个多线程,从中您可以学到线程创建,线程同步,等基本知识。
这是一篇介绍IOS多线程理解的文章,简洁易懂,方便阅读
ios多线程编程指南,包含NSThread,CGD等,深入简出讲解ios多线程原理和应用
iOS 线程资料汇总 iOS 线程使用例子及iOS并发编程指南及代码
iOS上开启线程之行任务,大家都比较熟悉,但是,如果开启一个常驻线程,我估计很多人不会,或者都不知道什么是"常驻线程"。下载来看看吧。
iOSGCD控制多线程任务数量,直接使用ZKRGlobalQueue^()。
关于iOS 多线程编程知识点,iOS 多线程 NSThread NSOperation GCD
#iOS的三种多线程技术 和特性 1.NSThread 2.NSOperation/NSOperationQueue 3.GCD (大中心调度)
iOS线程安全,读写锁,栅栏函数等深度解析,多读单写保证公共资源安全!
iOS多线程面试题
iOS开发多线程,NSoperetion, GCD,多线程的网络图片的下载
iOS多线程,四种实现方式中最简单的两种pthread,NSThread的用法介绍。
iOS多线程编程指南!!
ios 多线程NSoperation
iOS多线程编程之Grand Central Dispatch(GCD)使用,卖票的例子来讲NSThread的线程同步,使用了两种锁,一种NSCondition ,一种是:NSLock,还有加了一个 线程3 去唤醒其他两个线程锁中的wait,里面的注释很已经写的...
iOS多线程开发一 使用NSThread NSThread的基本使用 // demo说明 NSThreadDemoOne: 简单使用多线程,区分有多线程和没有多线的区别 NSThreadDemoTwo: 因为NSThread只能传一个一个参数,如果咬传递多个参数,使用封装...
里面有3个demo,各种多线程详解,以及多线程使用,为了帮助更多的人理解多线程
iOS开发学习之iOS多线程和RunLoop.pdf