iOS—多线程
线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B。为了同时执行两个任务,产生了多线程。 线程执行完毕就被销毁
1、进程就是在操作系统中运行的程序,专业点说,进程是应用程序的执行实例
2、进程不能执行任务
3、进程在运行时创建的资源随着进程的终止而死亡
线程执行完毕就会被销毁。
子线程:由主线程来创建,用来帮助主线程执行程序的后台处理任务。如果子线程A中又创建一个子线程B,在创建之后,这两者就是相互独立的,多个子线程之间效果上可以同时执行。
一个进程中可以有多个线程,并且所有线程都在该进程的虚拟地址空间中,可以使用进程的全局变量和系统资源。
多线程(NSThread)
初始化有俩种方式
NSThread *thread=[[NSThread alloc]initWithTarget:self selector:@selector(子线程调用的方法) object:@"可以传进子线程方法的参数id类型"];
[NSThread detachNewThreadSelector:@selector(thraed:) toTarget:self withObject:@"thread"];第二种初始化
注释:第一种初始化方式需要手动开启任务 第二种不需要
[thraed start];
子线程调用的其他经常常用的方法或属性:
[NSThread currentThread]可以得到当前的线程
eg;"{number = 22, name = main}", number系统分配的数字 name是线程的名字 其中主线程number是1 name=main
BOOL isMainThread 判断是否为主线程
BOOL executing 判断是否正在执行
BOOL finished 判断是否完成
BOOL cancelled判断是否取消
- (void)cancel 取消
- (void)start 开始
- (void)main 设main线程
[NSThread exit];//退出当前线程 (线程先取消状态下才能推出)
+ (BOOL)setThreadPriority:(double)p;设置优先级
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;设置线程休眠时间
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;//子线程执行完毕跳的主线程 切换线程