//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. vue 中 px转vw的用法

    下面介绍最简单的用法 1 下载依赖 npm install postcss-import postcss-loader postcss-px-to-viewport --save-dev 2 在项目根 ...

  2. Linux MySQL的root无法登录数据库ERROR 1045 (28000)

    Linux环境下,脚本自动安装完数据库,命令行用mysql -uroot -ppasswaord 登录却报了这么个错: ERROR 1045 (28000): Access denied for us ...

  3. (办公)记事本_Linux常用的文件操作命令

    参考尚硅谷的谷粒学院的linux教程:http://www.gulixueyuan.com/course/300/task/7080/show 好吧,其实一个命令他要是讲超过20分钟,我就去看菜鸟教程 ...

  4. IT兄弟连 HTML5教程 CSS3属性特效 定义省略文本的处理方式

    text-overflow属性仅是注解,当文本溢出时是否显示省略标记,并不具备其它的样式属性定义.我们想要实现溢出时产生省略号的效果.还必须定义:强制文本在一行内显示(white-space:nowr ...

  5. weed3-2.1.开始纯java使用

    Weed3 一个微型ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 纯java使用 ...

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

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

  7. Provide Several View Variants for End-Users 为最终用户提供多个视图变体

    In this lesson, you will learn how to provide several customized variants of the same View, and allo ...

  8. 前端最佳实践——DOM操作

    1.浏览器渲染原理 在讲DOM操作的最佳性能实践之前,先介绍下浏览器的基本渲染原理. 分为以下四个步骤: 解析HTML(HTML Parser) 构建DOM树(DOM Tree) 渲染树构建(Rend ...

  9. 超实用的JS数组去重

    一.简单的去重方法,利用数组indexOf方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...

  10. 使用ul和li进行图片的布局

    使用ul和li进行浮动布局(自适应) 1 图片上下两排: 首先盒子的宽度要给100% ul包裹一个div,首先量好盒子的宽和高,并进行设置, margin 0 auto 盒子居中显示 每个li向左浮动 ...