欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios多线程之NSThread使用技巧

程序员文章站 2023-08-24 08:40:06
一个nsthread对象就代表着一条线程 创建启动线程 //创建线程 /* 第一个参数:目标对象 第二个参数:选择器,线程启动要调用哪个方法 第三个参数:前面方法要接收的...

一个nsthread对象就代表着一条线程

创建启动线程

 //创建线程
 /*
  第一个参数:目标对象
  第二个参数:选择器,线程启动要调用哪个方法
  第三个参数:前面方法要接收的参数(最多只能接收一个参数,没有则传nil)
  */
 nsthread *thread = [[nsthread alloc]initwithtarget:self selector:@selector(run:) object:@"wendingding"];
  //启动线程
 [thread start];
 //线程只要启动,就会在线程thread中执行self的run方法

其他两种创建线程的方法:

//第二种创建线程的方式:分离出一条子线程
//特点:自动启动线程,无法对线程进行更详细的设置
 /*
  第一个参数:线程启动调用的方法
  第二个参数:目标对象
  第三个参数:传递给调用方法的参数
  */
 [nsthread detachnewthreadselector:@selector(run:) totarget:self withobject:@"我是分离出来的子线程"];

//第三种创建线程的方式:后台线程
//特点:自动启动县城,无法进行更详细设置
[self performselectorinbackground:@selector(run:) withobject:@"我是后台线程"];

设置线程的属性

 //设置线程的名称
 thread.name = @"线程a";

 //设置线程的优先级,注意线程优先级的取值范围为0.0~1.0之间,1.0表示线程的优先级最高,如果不设置该值,那么理想状态下默认为0.5
 thread.threadpriority = 1.0;

线程的状态

//线程的各种状态:新建-就绪-运行-阻塞-死亡
//常用的控制线程状态的方法
[nsthread exit];//退出当前线程
[nsthread sleepfortimeinterval:2.0];//阻塞线程
[nsthread sleepuntildate:[nsdate datewithtimeintervalsincenow:2.0]];//阻塞线程
//注意:线程死了不能复生。