//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操作队列的更多相关文章

  1. java多线程之:SynchronousQueue队列

    SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然.同步队列没有任何内部容量,甚至连一个队列的容量都没有.      不能在同步队列上进行 peek ...

  2. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  3. 第十五章、线程之queue模块的各种队列

    目录 第十五章.线程之queue模块的各种队列 一.Queue 二.LifoQueue堆栈 三.PriorityQueue优先级队列 第十五章.线程之queue模块的各种队列 一.Queue impo ...

  4. iOS多线程之8.NSOPeration的其他用法

      本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...

  5. iOS多线程之GCD小记

    iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...

  6. 多线程之RunLoop

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  7. JAVA多线程之wait/notify

    本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...

  8. Android-——多线程之Handler(转)

    Android--多线程之Handler 原文地址:http://www.cnblogs.com/shirley-1019/p/3557800.html 前言 Android的消息传递机制是另外一种形 ...

  9. Android 多线程之IntentService 完全详解

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

随机推荐

  1. zuul网关

    Zuul路由网关简介及基本使用 简介 Zuul API路由网关服务简介 请看上图,这里的API 路由网关服务 由Zuul实现,主要就是对外提供服务接口的时候,起到了请求的路由和过滤作用,也因此能够隐藏 ...

  2. Graylog 环境搭建与使用

    graylog 官网地址: www.graylog.org graylog 简易架构图: graylog 生产架构图: graylog 有两个版本,1.企业版:2.开源版 下面使用开源版本搭建日志中心 ...

  3. 使用ReentrantLock

    /** * java.util.concurrent.locks包提供的ReentrantLock用于替代synchronized加锁* 因为synchronized是Java语言层面提供的语法,所以 ...

  4. Hive初步认识,理解Hive(一)

    Hive初步认识,理解Hive(一) 用了有一段时间的Hive了,之前一直以为hive是个数据库,类似Mysql.Oracle等数据库一样,其实不然. Hive是实现Hadoop 的MapReduce ...

  5. jQuery实现下拉框默认选中

    <form class="form-inline" method="post" action="/score_result/"> ...

  6. springboot2.x实现oauth2授权码登陆

    参考文章:https://blog.csdn.net/qq_27828675/article/details/82466599 一 进行授权页 浏览器输入http://localhost:8081/o ...

  7. laravel大量填充项目测试数据的正确方法

    项目开发时,一般都会有到项目测试数据的准备操作,以前都是基于PHP代码自主编写sql语句,然后循环的插入到数据库中里面,当当我们接触过laravel数据库后,就可以很方便的完成项目的测试数据准备. 但 ...

  8. CentOS 安装Asp.net Core & FTP服务

    网络设置 确认是否成功连网: ping baidu.com 如果无法上网请检查以下设置 ip link show vim /etc/sysconfig/network-scripts/ipcfg-(看 ...

  9. Navicat Premium 连接oracle 提示ORA-01017:用户名/口令无效;登陆被拒绝

    Navicat Premium 连接oracle,密码明明是对的,还是提示 ORA-01017:用户名/口令无效:登陆被拒绝.而用Pl/SQL 连接没有问题. 其实用户名和密码是对的,但还是会报错,这 ...

  10. 用python暴力破解压缩文件并不是万能,至少这个场景我告诉你密码你用代码也破解不了

    看到论坛上各种贴子写用python进行暴力破解的文章,于是自己也想去尝试一下,不试不知道,一试吓一跳,真的就像那句有名的”python由入门到放弃“,把论坛上别人的脚本全部自己敲一遍,运行不报错,但也 ...