多线程
来源:互联网 发布:小区车辆出入数据 编辑:程序博客网 时间:2024/06/08 13:14
多线程
每个运行的程序都至少包含一个线程, 这个线程可以称为主线程, 在程序运行时创建, 用于执行main函数.
拥有多个线程的程序称作多线程.
当出现以下3种情况时,我们会经常用到多线程管理.
1. 大量运算 (当用到for循环进行大量运算时)
2. 数据读取 (本地,数据库查询时)
3. 网络请求 (同步网络请求时)
注意:在我们手动添加子线程的时候,需要我们自己来添加自动释放池
一,NSThread
1.
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector() object:nil];
[thread start];
2.
[NSThread detachNewThreadSelector:@selector() toTarget:self object:nil]; //方法里写执行的代码,注意自动释放池
二,NSobject
[self performSelectorInBackground:@selector() withObject:nil]; //方法里写执行的代码,注意自动释放池
三,NSOperation 和 NSOperationQueue
NSOperation *operation = [[NSOperation alloc] init];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.naxConcurrentOperationCount = 2; // 线程并发数
[queue addObject:operation];
[operation release];
[queue release];
//注意:线程并发并不能无限制进行, 一般同时运行线程最多10个左右,
当并发数为1的时候, 线程与线程之间是同步的
四,NSBlockOperation
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
@autorelesepool{
// 多线程所要执行的代码
}
}];
五,NSInvocationOperation
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector() object:nil]; //方法里写执行的代码,注意自动释放池
六,GCD
dispatch_queue分为
1.SerialQueue 线程同步, 即一次只执行一个任务,
2. Concurrent 异步执行, 即可以并发的执行多个任务
GCD 功能
dispatch_async() 队列中添加任务,任务会排队执行
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- springMVC接受请求参数
- php类库PHP QR Code 二维码
- Java泛型-- 通配符
- Eclipse java 文件编辑器 根据字符串定位光标位置
- Linux shell脚本的字符串截取
- 多线程
- app应用支付后返回app
- 第十七周项目三日期结构体
- 单例模式的应用
- 第17周项目7-电子词典结构体版
- NineOldAndroids
- 489 - Hangman Judge
- 寄存器,锁存器,触发器,存储器的区别
- 编程技巧:表驱动法取代if else