UI_多线程

多线程是程序中独立运行的代码,能够在网络下载数据中起到提高效率的作用.

进程:是一个应用进程(可以是一个线程,也可以是多个线程),  分配一个进程空间,  最少有一个线程;

线程具有同一进程,线程运行中互不干扰;

主线程里包括多线程: 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.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值