多线程(一) NSThread
OS中多线程的实现方案:
技术 | 语言 | 线程生命周期 | 使用频率 |
pthread | C | 程序员自行管理 | 几乎不用 |
NSthread | OC | 程序员自行管理 | 偶尔使用 |
GCD | C | 自动管理 | 经常使用 |
NSOperation | OC | 自动管理 | 经常使用 |
线程的状态
NSThread的创建方式:
1
2
3
4
5
6
7
8
9
10
11
12
|
//创建线程方式一
NSThread *threadOne = [[ NSThread alloc] initWithTarget: self selector: @selector (testAction) object: nil ];
//给线程命名
threadOne.name = @ "threadOne" ;
//启动线程,在新开的线程执行testAction方法
[threadOne start];
//创建线程方式二,并且会自动启动
[ NSThread detachNewThreadSelector: @selector (testAction) toTarget: self withObject: nil ];
//创建线程方式三,隐式创建方式,自动启动
[ self performSelectorInBackground: @selector (testAction) withObject: nil ];
|
调用的方法
1
2
3
4
5
6
7
|
- ( void )testAction
{
for ( int i = 0; i < 3; i++)
{
NSLog (@ "i = %d,当前线程 = %@" ,i,[ NSThread currentThread]);
}
}
|
结果:可以看到有3条线程并发执行
线程的属性:
1
2
3
4
5
6
|
//创建一个线程
NSThread * thread = [[ NSThread alloc] initWithTarget: self selector: @selector (testAction) object: nil ];
//线程名字
thread .name = @ "wl" ;
//线程优先级,一般情况不设置,默认0.5,数值范围0-1,数值越大优先级越高
thread .threadPriority = 0.5;
|
常用方法,这些都是类方法,相对于这段代码所在的线程进行操作
1
2
3
4
5
6
7
8
9
10
11
12
|
//获得主线程
[ NSThread mainThread];
//判断是否为主线程,返回一个BOOL值
BOOL isMainThread = [ NSThread isMainThread];
//判断是否为多线程,返回一个BOOL值
BOOL isMultiThreaded = [ NSThread isMultiThreaded];
//把线程从可调度线程池中移除2s(阻塞线程)
[ NSThread sleepForTimeInterval:2];
//把线程从可调度线程池中移除直到一个时间点(阻塞线程)
[ NSThread sleepUntilDate:[ NSDate dateWithTimeIntervalSinceNow:2]];
//停止线程,线程死亡,这个线程就已经不存在了
[ NSThread exit];
|
转载于:https://www.cnblogs.com/luoxiaofu/p/5250143.html
多线程(一) NSThread相关推荐
- iOS 多线程基础之 NSThread
前言 通常在 iOS 中,有三种比较常见的方式实现多线程,分别是 NSThread,GCD 和 NSOperation.本文主要介绍它们当中使用频率较低的 NSThread. 文章目录 前言 NSTh ...
- iOS 多线程的四种技术方案
iOS 多线程的四种技术方案 image pthread 实现多线程操作 代码实现: void * run(void *param) {for (NSInteger i = 0; i < 100 ...
- iOS_多线程(一)
在学习多线程之前首先搞清楚以下几个问题. 并发:在同一时刻,只有一条指令被执行,多条指令进行快速切换执行. 并行:在同一时刻,多个处理器可以处理多条指令 1.什么是进程? 一个运行的程序就是一个进程或 ...
- iOS开发值多线程简单介绍
2019独角兽企业重金招聘Python工程师标准>>> 今天,我们就来说一下iOS多线程的问题,为什么要使用iOS多线程?因为一个应用程序在一个时间内可能有一个呗或者多任务,我们不可 ...
- IOS多线程管理1关于多线程你必须知道的二三事
/* 不是技术性的文章,只是记录自己每天学习的方式 ----------------------------程序猿的征途是星辰的大海 */ [1] 何为多线程? 在多线程学习之前,很多人将进程,线程, ...
- iOS多线程简单理解
1. 何为线程: 一个线程中任务的执行是串行的,同一时间内.一个线程只能执行一个任务. 线程是进程中的一条执行路径 2.何为多线程 一个进程中可以开启多条线程,多条线程可以并行(同时)执行不同的任务 ...
- java游戏 动态录入弹球_动态弹球的实现 加入了多线程技术--javaSE游戏准备工作...
任务描述:实现了动态弹球的功能,对于有弹球功能的SE游戏奠定了基础. package 运用线程技术的小球; import java.awt.*; import java.awt.event.*; im ...
- iOS中实现多线程的技术方案
pthread 实现多线程操作 代码实现: void * run(void *param) {for (NSInteger i = 0; i < 1000; i++) {NSLog(@" ...
- 【转】iOS开发学习计划
转自:简书 一.C语言基础 基本数据类型.基本运算.函数.数组.字符串.指针.结构体.预处理指令.枚举.文件操作.内存管理 二.Objective-C 1.Objective-C基本语法 数据类型.表 ...
最新文章
- 一次 SSH 攻击与处理小记
- 纯js制作的弹球游戏
- SQL Server 2012 安装杂谈
- 如何用CMD开启3389与查看3389端口
- 【推荐系统】双塔模型中的负采样
- 安徽理工大学计算机学院蒋群,计算机学院2001级校友十周年聚会
- js 下拉底部加载|滑轮滚动到页面底部ajax加载数据的实例
- net MVC 重定向总结
- [干货来袭]MSSQL Server on Linux预览版安装教程(先帮大家踩坑)
- c语言float二进制输出代码_C语言学习笔记——学前知识概述
- 作者:胡清华(1976-),男,博士,天津大学计算机科学与技术学院教授。
- 点赞!一个程序员花了14小时寻找问题疫苗的流向
- java面试排序_Java-四种面试常考排序
- qt 多重继承_C++多继承(多重继承)详解
- 韩顺平 java笔记 第3讲 运算符 流程控制
- Java中的堆栈API——Stack
- 主成分与因子分析异同_主成分分析和因子分析有什么区别?
- php图片颤抖,PHP-使用jquery 怎么做出图片的震荡效果
- 可视化看板:基于电子竞技行业数据大数据可视化分析(详细代码及图文说明)
- 前端项目发版后用户需要手动刷新页面获取的解决方案