//
// ViewController.m
// 03-掌握-NSThread基本使用 #import "ViewController.h"
#import "XMGThread.h" @interface ViewController () @end @implementation ViewController -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self createNewThread1];
} //1.alloc init 创建线程,需要手动启动线程,根据线程的number判断是不是同一个线程。
//线程的生命周期:当任务执行完毕之后被释放掉(比较特殊,)
-(void)createNewThread1
{
//1.创建线程
/* 第一个参数:目标对象 self
第二个参数:方法选择器 调用的方法
第三个参数:前面调用方法需要传递的参数 nil */ //XMGThread是继承自NSThread的类,threadA是局部变量,大括号之后就销毁了,
XMGThread *threadA = [[XMGThread alloc]initWithTarget:self selector:@selector(run:) object:@"ABC"];
//设置属性
threadA.name = @"线程A";//属性用点语法和set方法是一样的。
//设置优先级 取值范围 0.0 ~ 1.0 之间 最高是1.0 默认优先级是0.5,获取cpu的几率更大,
threadA.threadPriority = 1.0;
//2.启动线程,// 进入就绪状态 -> 运行状态。当线程任务执行完毕,自动进入死亡状态
[threadA start]; NSThread *threadB = [[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"ABC"];//object是run方法的参数,处于暂停状态。
threadB.name = @"线程b";
threadB.threadPriority = 0.1;
[threadB start]; NSThread *threadC = [[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"ABC"];
threadC.name = @"线程C";
[threadC start]; [self createNewThread3]; } //2.分离子线程,自动启动线程,不需要start,拿不到线程对象,无法对线程进行更详细的设置
-(void)createNewThread2
{
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"分离子线程"];
} //3.开启一条后台线程,不需要start,拿不到线程对象,无法对线程进行更详细的设置
-(void)createNewThread3
{
[self performSelectorInBackground:@selector(run:) withObject:@"开启后台线程"];
} -(void)run:(NSString *)param
{
NSLog(@"---run----%@---%@",[NSThread currentThread].name,param);
for (NSInteger i = ; i<; i++) {
NSLog(@"%zd----%@",i,[NSThread currentThread].name);
}
} @end /*
启动线程
- (void)start;
// 进入就绪状态 -> 运行状态。当线程任务执行完毕,自动进入死亡状态 阻塞(暂停)线程
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
// 进入阻塞状态 强制停止线程
+ (void)exit;
// 进入死亡状态 注意:一旦线程停止(死亡)了,就不能再次开启任务
*/
//
// XMGThread.h
// 03-掌握-NSThread基本使用
//
// Created by xiaomage on 16/2/18.
// Copyright © 2016年 小码哥. All rights reserved.
// #import <Foundation/Foundation.h> @interface XMGThread : NSThread @end
//
// XMGThread.m
// 03-掌握-NSThread基本使用
//
// Created by xiaomage on 16/2/18.
// Copyright © 2016年 小码哥. All rights reserved.
// #import "XMGThread.h" @implementation XMGThread -(void)dealloc
{
NSLog(@"dealloc----%@",[NSThread currentThread]); //线程的run方法执行完之后,才调用。
}
@end

最新文章

  1. 2016/11/16 周三 &lt;Web SQL Database基本使用方法(入门) &gt;
  2. 用Pyinstaller打包发布exe应用 (转)经测可用
  3. 【小贴士】虚拟键盘与fixed带给移动端的痛!
  4. 数据结构算法C语言实现(十七)--- 5.1&amp;5.2数组:定义、顺序表示及实现
  5. 重温WCF之数据契约和序列化(四)
  6. 更新数据前jquery如何填充数据到表单域中
  7. Mysql命令行中文乱码的解决方法
  8. C# 保存和读取TreeView展开的状态
  9. Devstack single node Installation on VM
  10. 最新swift4.0 图片进行尺寸大小及体积压缩
  11. Linux0.11启动过程
  12. selenium处理iframe定位于切换问题解决办法
  13. .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)
  14. certificate &amp; encryption
  15. [20181206]关于一致性读取3.txt
  16. CSS属性选择器和部分伪类
  17. oracle 查询表结构
  18. 【BZOJ3879】SvT(后缀自动机,虚树)
  19. Codeforces 377A - Maze
  20. BOS物流项目第十一天

热门文章

  1. 使用ajax出现canceled情况
  2. 2 SQL 查询基础
  3. oracle亲手安装过程
  4. 配置Django中数据库读写分离
  5. css布局的各种FC简单介绍:BFC,IFC,GFC,FFC
  6. Python之机器学习-朴素贝叶斯(垃圾邮件分类)
  7. 当java web项目部署到服务器上时,无法将图片等媒体文件保存到服务器的最终奥义
  8. I2C详细介绍
  9. IDEA的Maven Projects无法显示
  10. 九度教程第22题——今年暑假不AC(看尽量多的电视节目)