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相关推荐

  1. iOS 多线程基础之 NSThread

    前言 通常在 iOS 中,有三种比较常见的方式实现多线程,分别是 NSThread,GCD 和 NSOperation.本文主要介绍它们当中使用频率较低的 NSThread. 文章目录 前言 NSTh ...

  2. iOS 多线程的四种技术方案

    iOS 多线程的四种技术方案 image pthread 实现多线程操作 代码实现: void * run(void *param) {for (NSInteger i = 0; i < 100 ...

  3. iOS_多线程(一)

    在学习多线程之前首先搞清楚以下几个问题. 并发:在同一时刻,只有一条指令被执行,多条指令进行快速切换执行. 并行:在同一时刻,多个处理器可以处理多条指令 1.什么是进程? 一个运行的程序就是一个进程或 ...

  4. iOS开发值多线程简单介绍

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们就来说一下iOS多线程的问题,为什么要使用iOS多线程?因为一个应用程序在一个时间内可能有一个呗或者多任务,我们不可 ...

  5. IOS多线程管理1关于多线程你必须知道的二三事

    /* 不是技术性的文章,只是记录自己每天学习的方式 ----------------------------程序猿的征途是星辰的大海 */ [1] 何为多线程? 在多线程学习之前,很多人将进程,线程, ...

  6. iOS多线程简单理解

    1. 何为线程: 一个线程中任务的执行是串行的,同一时间内.一个线程只能执行一个任务. 线程是进程中的一条执行路径 2.何为多线程 一个进程中可以开启多条线程,多条线程可以并行(同时)执行不同的任务 ...

  7. java游戏 动态录入弹球_动态弹球的实现 加入了多线程技术--javaSE游戏准备工作...

    任务描述:实现了动态弹球的功能,对于有弹球功能的SE游戏奠定了基础. package 运用线程技术的小球; import java.awt.*; import java.awt.event.*; im ...

  8. iOS中实现多线程的技术方案

    pthread 实现多线程操作 代码实现: void * run(void *param) {for (NSInteger i = 0; i < 1000; i++) {NSLog(@" ...

  9. 【转】iOS开发学习计划

    转自:简书 一.C语言基础 基本数据类型.基本运算.函数.数组.字符串.指针.结构体.预处理指令.枚举.文件操作.内存管理 二.Objective-C 1.Objective-C基本语法 数据类型.表 ...

最新文章

  1. 一次 SSH 攻击与处理小记
  2. 纯js制作的弹球游戏
  3. SQL Server 2012 安装杂谈
  4. 如何用CMD开启3389与查看3389端口
  5. 【推荐系统】双塔模型中的负采样
  6. 安徽理工大学计算机学院蒋群,计算机学院2001级校友十周年聚会
  7. js 下拉底部加载|滑轮滚动到页面底部ajax加载数据的实例
  8. net MVC 重定向总结
  9. [干货来袭]MSSQL Server on Linux预览版安装教程(先帮大家踩坑)
  10. c语言float二进制输出代码_C语言学习笔记——学前知识概述
  11. 作者:胡清华(1976-),男,博士,天津大学计算机科学与技术学院教授。
  12. 点赞!一个程序员花了14小时寻找问题疫苗的流向
  13. java面试排序_Java-四种面试常考排序
  14. qt 多重继承_C++多继承(多重继承)详解
  15. 韩顺平 java笔记 第3讲 运算符 流程控制
  16. Java中的堆栈API——Stack
  17. 主成分与因子分析异同_主成分分析和因子分析有什么区别?
  18. php图片颤抖,PHP-使用jquery 怎么做出图片的震荡效果
  19. 可视化看板:基于电子竞技行业数据大数据可视化分析(详细代码及图文说明)
  20. 前端项目发版后用户需要手动刷新页面获取的解决方案

热门文章

  1. swagger注释API详细说明
  2. linux设置进程不忽略信号,Linux下后台进程编写中屏蔽信号
  3. 系统学习深度学习(三十九)--基于模型的强化学习与Dyna算法框架
  4. java常用lib_Java常用工具类整理
  5. 【C++入门】C++ 运算符的重载
  6. Linux内核开发_内核模块
  7. 征集大家的网站如何防范DDOS攻击解决方案
  8. react开发教程(九)redux基础
  9. 09年全年的case处理总量
  10. 分布式服务弹性框架“Hystrix”实践与源码研究(一)