进程:每一个进程都是一个应用程序,都有独立的内存空间,一般来说一个应用程序存在一个进程,但也有多个进程的情况:如谷歌浏览器(同一个进程中的线程共享内存中内存和资源).
线程:所有程序执行的最小单位 多线程能提高CPU的使用率,防止主线程堵塞
视图的操作一定要在主线程上完成
在子线程里面写定时器是最精准的
// //第一种创建方式
// NSThread *thread=[[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// [thread start];
//第二种创建方式
// [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
//第三种创建方式
// [self performSelectorInBackground:@selector(run) withObject:nil];
for ( int i=0; i<100; i++) {
NSLog ( @"---主线程%d---" ,i);
}
//第四种创建方式
NSOperationQueue *queue=[[ NSOperationQueue alloc ] init ];
//设置同时运行的线程数
[queue setMaxConcurrentOperationCount :2];
// //向线程池中添加事件
// [queue addOperationWithBlock:^{
// NSLog(@"%d",[[NSThread currentThread] isMainThread]);
// [self run];
// }];
//第五种创建方式
NSInvocationOperation *op=[[ NSInvocationOperation alloc ] initWithTarget : self selector : @selector (run) object : nil ];
//设置事件的优先级
[op setQueuePriority : NSOperationQueuePriorityVeryHigh ];
// NSThread *thread=[[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// [thread start];
//第二种创建方式
// [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
//第三种创建方式
// [self performSelectorInBackground:@selector(run) withObject:nil];
for ( int i=0; i<100; i++) {
NSLog ( @"---主线程%d---" ,i);
}
//第四种创建方式
NSOperationQueue *queue=[[ NSOperationQueue alloc ] init ];
//设置同时运行的线程数
[queue setMaxConcurrentOperationCount :2];
// //向线程池中添加事件
// [queue addOperationWithBlock:^{
// NSLog(@"%d",[[NSThread currentThread] isMainThread]);
// [self run];
// }];
//第五种创建方式
NSInvocationOperation *op=[[ NSInvocationOperation alloc ] initWithTarget : self selector : @selector (run) object : nil ];
//设置事件的优先级
[op setQueuePriority : NSOperationQueuePriorityVeryHigh ];
[queue
addOperation
:op];
//第六中方式创建 (子类化一个线程)
Person *ps=[[ Person alloc ] init ];
[queue addOperation :ps];
//第六中方式创建 (子类化一个线程)
Person *ps=[[ Person alloc ] init ];
[queue addOperation :ps];