iOS 创建多线程的三种方法

<span style="font-size:18px;"><strong>(1)//通过NSObject的方法创建线程</strong></span>
    //(这个方法会自动开辟一个后台线程,参数1:在这个后台线程中执行的方法,参数2:用于传递参数)
    [self performSelectorInBackground:@selector(banZhuanPlus) withObject:nil];

(2)//通过NSThread创建线程(参数1:方法的执行者;参数2:在线程中执行的方法;参数3:用于传递参数)

//第一步:创建线程

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(banZhuanPlus) object:nil];

//第二步:执行

[thread start];

[thread release];

  (3)//NSOperation就是一个操作单元,用来执行方法,是一个抽象类,必须子类化或者使用系统创建好的子类(NSInvocationOperation or NSBlockOperation)

//    //NSOperation是最小的操作单元;只能够执行一次;

//    //NSInvocationOperation第一步:创建

NSInvocationOperation *invocation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(banZhuanPlus) object:nil];

//    //第二步:(不设置的话不添加到队列)在主线程中执行

//    [invocation start];

//NSBlockOperation第一步:创建

NSBlockOperation *block = [NSBlockOperation blockOperationWithBlock:^{

[self banZhuanPlus];

}];

//    //第二步:执行(在主线程中执行)

//    [block start];//如果添加到队列就不要start了

// 这个队列会自动帮咱们创建一个辅助的线程

//这个队列里面只能够添加NSOperation以及子类的对象;

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[queue setMaxConcurrentOperationCount:2];//设置最大并行数;

[queue addOperation:block];//只要把操作队列添加到队列中就会执行;

[queue addOperation:invocation];

//队列: 先进先出

//栈: 先进后出

//队列中涉及到串行和并行

//串行: 一次只能执行一个任务

//并行: 一次可以执行多个任务

(整片复制的时候,注意没有注释的属于一体)

时间: 2024-10-01 05:13:08

iOS 创建多线程的三种方法的相关文章

Java创建多线程的三种方法

Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的. 1.继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法.start()方法

线程的状态以及创建多线程的三种方式

首先了解一下线程的五种状态: 新建状态: 新建状态是指new之后,即新创建了一个线程的时候,此时并未运行任何线程方法体内的程序代码. 就绪状态: 简单来说就是指程序调用了start()之后,线程就得到了启动,代表线程进入了就绪状态,但是此时并不代表它会立刻去执行run()方法体内的程序代码,而是随时等待cpu的调度. 运行状态: 获得cpu的时间后,调用run()方法,进入运行状态. 阻塞状态: 由于某种原因放弃了cpu的会用权力,暂时停止运行,等待再次被调用. 死亡状态: 线程正常执行完毕,或

iOS拨打电话(三种方法)

iOS拨打电话(三种方法) 查了很多地方的关于iOS程序拨打电话,大都不全,今天我总结了三种方法,各有不同,拿来给大家分享,希望给大家有所帮助 1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"];    //            NSLog(@"s

cocos2dx中创建动画的三种方法

1.最最原始的方法,先创建动画帧,再创建动画打包(animation),再创建动画(animate) 第一步: 创建动画帧:CCSpriteFrame,依赖于原始的资源图片(xx.png,xx.jpg) CCSpriteFrame *frame1=CCSpriteFrame::create("1.png"); CCSpriteFrame *frame2=CCSpriteFrame::create("2.png"); CCSpriteFrame *frame3=CCS

用Fiddler可以设置浏览器的UA 和 手动 --Chrome模拟手机浏览器(iOS/Android)的三种方法,亲测无误!

附加以一种软件的方法是:用Fiddler可以设置浏览器的UA 以下3种方法是手动的 通过伪装User-Agent,将浏览器模拟成Android设备. 第一种方法:新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择“复制”,复制一个图标副本到桌面.右击该副本,选择“属性”,打开相应的对话框,在“目标”文本框的字符后面添加以下语句:“--user-agent="Android"”,如下图: 注意user前面是两个“-”,并且“chrome.exe”与“--

java中创建线程的三种方法以及区别

Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线程 3)使用Callable和Future创建线程 下面让我们分别来看看这三种创建线程的方法. ------------------------继承Thread类创建线程--------------------- 通过继承Thread类来创建并启动多线程的一般步骤如下 1]d定义Thread类的子类

MySQL创建用户的三种方法 (并授权)转

前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名,跟其他的数据库不一样) 用户名:16字符以内. 主机名:可以用主机名和IP地址,也可以用通配符 通配符说明:172.18.10.%(IP地址为172.18.10段的所有IP地址都可以访问) 二.通过CREATE USER命令进行创建用户 脚本:CREATE USER '[email protect

MySQL创建用户的三种方法

前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名,跟其他的数据库不一样) 用户名:16字符以内. 主机名:可以用主机名和IP地址,也可以用通配符 通配符说明:172.18.10.%(IP地址为172.18.10段的所有IP地址都可以访问) 二.通过CREATE USER命令进行创建用户 脚本:CREATE USER '[email protect

Python并发编程之创建多线程的几种方法(二)

大家好,并发编程 进入第二篇. 今天的内容会比较基础,主要是为了让新手也能无障碍地阅读,所以还是要再巩固下基础.学完了基础,你们也就能很顺畅地跟着我的思路理解以后的文章. 本文目录 学会使用函数创建多线程 学会使用类创建多线程 多线程:必学函数讲解 经过总结,Python创建多线程主要有如下两种方法: 函数 类 接下来,我们就来揭开多线程的神秘面纱. . 学会使用函数创建多线程 在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程.