- ( BOOL )application:(UIApplication
*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions |
03 | self.window
= [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; |
06 | NSThread
* thread =
[[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@ "universe" ]; |
11 | //创建线程的第二种方式,NSThread类方法 |
12 | [NSThread
detachNewThreadSelector:@selector(run:) toTarget:self withObject:@ "yuzhou" ]; |
15 | //创建线程的第三种方法
NSObject方法 |
16 | [self
performSelectorInBackground:@selector(run:) withObject:@ "nsobject
thread" ]; |
19 | NSOperationQueue
*oprationQueue = [[NSOperationQueue alloc] init]; |
20 | [oprationQueue
addOperationWithBlock:^{ |
22 | NSLog(@ "oprationQueue" ); |
24 | [oprationQueue
release]; |
27 | NSOperationQueue
*oprationQueue1 = [[NSOperationQueue alloc] init]; |
28 | oprationQueue1.maxConcurrentOperationCount
= 1; //指定池子的并发数 |
30 | //NSOperation
相当于java中的runnable接口,继承自它的就相当一个任务 |
31 | NSInvocationOperation
*invation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run:) object:@ "invation" ]; |
32 | [oprationQueue1
addOperation:invation]; //将任务添加到池子里面,可以给池子添加多个任务,并且指定它的并发数 |
36 | NSInvocationOperation
*invation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run2:) object:@ "invocation2" ]; |
37 | invation2.queuePriority
= NSOperationQueuePriorityHigh; //设置线程优先级 |
38 | [oprationQueue1
addOperation:invation2]; |
41 | [oprationQueue1
release]; |
43 | //调用主线程,用来子线程和主线程交互,最后面的那个boolean参数,如果为yes就是等这个方法执行完了在执行后面的代码;如果为no的话,就是不管这个方法执行完了没有,接着往下走 |
44 | [self
performSelectorOnMainThread:@selector(onMain) withObject:self waitUntilDone:YES]; |
46 | //---------------------GCD----------------------支持多核,高效率的多线程技术 |
48 | dispatch_queue_t
queue = dispatch_queue_create( "name" ,
NULL); |
50 | dispatch_async(queue,
^{ |
55 | dispatch_sync(dispatch_get_main_queue(),
^{ //其实这个也是在子线程中执行的,只是把它放到了主线程的队列中 |
56 | Boolean
isMain = [NSThread isMainThread]; |
64 | self.window.backgroundColor
= [UIColor whiteColor]; |
65 | [self.window
makeKeyAndVisible]; |
71 | Boolean
b = [NSThread isMainThread]; |
73 | NSLog(@ "onMain;;%d" ,b); |
78 | -
( void )
run:(NSString*)str |
80 | NSLog(@ "多线程运行:::%@" ,str); |
82 | -
( void )
run2:(NSString*)str |
84 | NSLog(@ "多线程运行:::%@" ,str); |
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理