多线程是程序中独立运行的代码,能够在网络下载数据中起到提高效率的作用.
进程:是一个应用进程(可以是一个线程,也可以是多个线程), 分配一个进程空间, 最少有一个线程;
线程具有同一进程,线程运行中互不干扰;
主线程里包括多线程: 1.在多线程中进行大量运算(for循环)
2.数据读取(本地读取, 数据库查询所有数据:比如电力系统, 户口等相同类型的信息);
3.进行网络请求(同步网络请求);
1.NSTread是轻量级的线程方式, 需要User自己进行管理.NSTread继承于NSObject
NSTread可以通过以下这个方法进行方法调用
- (void)creadSerial
{
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(action:) object:nil];
[thread start];
[thread release];
}- (void)action:(id)sender
{
NSLog(@"线程一");
}
2.NSObject也是一种线程方式, 但是自身不能直接调用, 必须创建一个继承于NSObject的类然后进行调用
- (void)createSerial
{
CustomOperation *cus = [[CustomOperation alloc] init];
[cus start];
[cus release];
}
3.NSOperationQueue线程队列, 如果进入线程队列不能调用start, 因为系统会自动调用start
- (void)createSerialGDC
{
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.maxConcurrentOperationCount = 1;//最大线程数为1
CustomOperation *cus = [[CustomOperation alloc] init];
[queue addOperation:cus];//将线程装入线程队列当中
}
一般线程与线程之间并发, 互不干扰, 同时进行, 同时进行的线程数一般限制在10个以内, 所以就用到了maxConcurrentOperationCount对线程数进行限制
4.NSBlockOperation的内容就是多线程所要执行的代码
- (void)createSerial
{
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
@autoreleasepool{
NSLog(@"我是block");
}//在block内部需要增加自动释放池
}];
}
所有跑多线程的地方都得手动增加释放池(除了创建工程时, 系统在main文件中自动创建自动释放池)
5.