多线程之NSOpertionQueue操作队列
//NSOpertionQueue NSOperation
//Queue
//主队列 和 自定义队列
//主队列是运行在主线程当中,自定义队列运行在后台
//NSOperation 定义需要执行的操作(任务)
//定义需要的操作,然后把该操作添加到合适的队列中
//三个步骤
//1.创建队列对象
//2.创建操作对象
//3.把操作对象添加到队列之中,等待队列分配线程执行操作 //1.创建队列
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//设置最大并发操作数
//队列中最多有几个操作同时执行
queue.maxConcurrentOperationCount = ;
//是否暂停执行队列中的线程
[queue setSuspended:YES];
//2.创建操作
//NSOperation 不能直接使用
//使用子类的对象 两种方式1、直接创建 2、使用block创建
NSOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(thread1:)
object:@"op1 "]; NSOperation *op2 = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(thread2:)
object:@"op2 "];
/*
NSBlockOperation *op3 = [[NSBlockOperation alloc] init];
[op3 addExecutionBlock:^{
//具体要执行的操作
}];
*/
//3.把操作加入到队列中
[queue addOperation:op1];
[queue addOperation:op2];
//加入之后,如果有操作,那队列就会自动执行
//4.设置操作的优先级
[op1 setQueuePriority:NSOperationQueuePriorityLow];
[op2 setQueuePriority:NSOperationQueuePriorityVeryHigh];
//5.设置操作之间的依赖关系
[op2 addDependency:op1]; //op2的执行依赖于op1,保证op1肯定op2之前执行
//是否重新让队列执行
[queue setSuspended:NO];
//回到主线程打印输出
for (int i = ; i < ; i ++) {
NSLog(@"主线程 : %d", i);
}
} - (void)thread1:(NSString *)name
{
//具体要执行的操作
for (int i = ; i < ; i ++) {
NSLog(@"多线程 %@: %d", name, i);
}
} - (void)thread2:(NSString *)name
{
for (int i = ; i < ; i ++) {
NSLog(@"多线程 %@: %d", name, i);
}
}
多线程之NSOpertionQueue操作队列的更多相关文章
- java多线程之:SynchronousQueue队列
SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然.同步队列没有任何内部容量,甚至连一个队列的容量都没有. 不能在同步队列上进行 peek ...
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- 第十五章、线程之queue模块的各种队列
目录 第十五章.线程之queue模块的各种队列 一.Queue 二.LifoQueue堆栈 三.PriorityQueue优先级队列 第十五章.线程之queue模块的各种队列 一.Queue impo ...
- iOS多线程之8.NSOPeration的其他用法
本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...
- iOS多线程之GCD小记
iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...
- 多线程之RunLoop
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- JAVA多线程之wait/notify
本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...
- Android-——多线程之Handler(转)
Android--多线程之Handler 原文地址:http://www.cnblogs.com/shirley-1019/p/3557800.html 前言 Android的消息传递机制是另外一种形 ...
- Android 多线程之IntentService 完全详解
关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...
随机推荐
- docker alphine 安装vim 等软件
alphine 不带 yum,所以只能用apt-get 安装 apt-get update apt-get install vim apt-get install net-tools
- 《Netty Zookeeper Redis 高并发实战》 图书简介
<Netty Zookeeper Redis 高并发实战> 图书简介 本书为 高并发社群 -- 疯狂创客圈 倾力编著, 高度剖析底层原理,深度解读面试难题 疯狂创客圈 Java 高并发[ ...
- MySQL数据库基础笔记
数据库 数据库就是存储和管理数据的仓库,用户可以对数据库中的数据进行增删改查等操作. 数据库的分类 关系型数据库(Oracle.MySQL.SQLite等) 非关系型数据库(Redis.MongoDB ...
- C#中类的实例化过程
创建某个类型的第一个实例时,所进行的操作顺序为:1.静态变量设置为02.执行静态变量初始化器3.执行基类的静态构造函数4.执行静态构造函数5.实例变量设置为06.执行衯变量初始化器7.执行基类中合适的 ...
- Filter Lookup Editor Data Source 筛选器查找编辑器数据源
In this lesson, you will learn how to filter the data displayed by a lookup editor. This editor is s ...
- 【坑】Maven [ERROR] 不再支持源选项 5。请使用 6 或更高版本
在pom.xml文件中添加如下代码: 注意:jdk使用自己下载的版本,我的是13 <properties> <project.build.sourceEncoding>UTF- ...
- nginx 配置实例-反向代理
反向代理实例一 虚拟机IP:192.168.116.129实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 虚拟机的192.168.116.129:8080 实验代码 ...
- Opencv中图像height width X 轴 Y轴 rows cols之间的对应关系
这里做一个备忘录:
- ORM映射(对象关系映射)
ORM映射(对象关系映射)分创建表和操作表两个部分创建单表创建关联表(foreignKey) 一对一 一对多(重点) 多对多(重点) 创建表后加str方法把打印的地址转换成对应字符表的操作(增删改查) ...
- 大数据基础--R语言(刘鹏《大数据》课后习题答案)
1.R语言是解释性语言还是编译性语言? 解释性语言 2.简述R语言的基本功能. R语言是一套完整的数据处理.计算和制图软件系统,主要包括以下功能: (1)数据存储和处理功能,丰富的数据读取与存 ...