多线程
来源:互联网 发布:cef c js 编辑:程序博客网 时间:2024/06/08 00:46
-(void)buttonClick
{
// [self thread];
//[self operation];
// [self gcd];
//[self gcd2];
[selfdownloadImage];
}
-(void)downloadImage
{
dispatch_async(dispatch_get_global_queue(0,0), ^{
NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.baidu.com/img/bd_logo1.png"]];
NSLog(@"下载完成");
//UI操作要在主线程里面执行
dispatch_async(dispatch_get_main_queue(), ^{
_imageView.image = [UIImageimageWithData:data];
});
});
}
-(void)gcd2
{
//组 把线程放在一个组里面,可以监听这个组里面的所有线程执行完之后,可以做一些操作
dispatch_group_t t =dispatch_group_create();
dispatch_group_async(t,dispatch_get_global_queue(0,0), ^{
[selffirst];
});
dispatch_group_async(t,dispatch_get_global_queue(0,0), ^{
[selfsecond];
});
//被t组管理的线程全部结束后会调用这个方法
//dispatch_get_main_queue() 如果想要在子线程执行完之后,进行刷新UI操作的话,就用主线程
dispatch_group_notify(t,dispatch_get_global_queue(0,0), ^{
NSLog(@"全部执行完成");
});
}
-(void)gcd
{
//创建一个线程队列
dispatch_queue_t t =dispatch_queue_create(NULL,NULL);
dispatch_queue_t t2 =dispatch_queue_create(NULL,NULL);
//获取一个闲置线程队列
dispatch_queue_t t3 =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
//把操作放在线程队列中,然后执行
dispatch_async(t, ^{
[selffirst];
});
//当上一个操作被执行完之后,才会执行下一个操作
//解决方法,把操作放在不同的线程队列中
dispatch_async(t2, ^{
[selfsecond];
});
dispatch_async(t3, ^{
[selfthird];
});
}
-(void)operation
{
//操作队列
//queue 把操作加到队列中,操作就是代码段
NSOperationQueue *queue = [[NSOperationQueuealloc] init];
queue.maxConcurrentOperationCount =2;
for (int i =1; i < 10; i++) {
MyOperation *operation = [[MyOperationalloc] init];
operation.time = i;
[queueaddOperation:operation];
//取消操作
//[operation cancel];
}
}
-(void)thread
{
//第一种开启线程方法
NSThread *thread = [[NSThreadalloc] initWithTarget:selfselector:@selector(first)object:nil];
[threadstart];
//第二种
[NSThreaddetachNewThreadSelector:@selector(second)toTarget:selfwithObject:nil];
//第三种
[selfperformSelectorInBackground:@selector(third)withObject:nil];
}
-(void)first
{
sleep(1);
NSLog(@"1");
}
-(void)second
{
sleep(2);
NSLog(@"2");
}
-(void)third
{
sleep(3);
NSLog(@"3");
}
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- C++ STL源码学习(construct、uninitialized篇)
- Android 自定义类库打包jar! 谁说不可以打包res 文件?
- MediaRecorder 录制花屏的问题
- 百度网盘 深度学习 天大 邓力讲座
- c# 中方法签名 指的是?
- 多线程
- cgi 解析
- 初识D3
- 串口通信 DTR DSR RTS CTS
- 数字证书原理
- MySQL中INSERT INTO SELECT的使用
- ubuntu安装和查看已安装
- 设计模式中类的关系
- iOS之block