ios-创建线程的基本方法和线程的状态以及属性
来源:互联网 发布:java jar 临时指定jdk 编辑:程序博客网 时间:2024/05/17 09:46
- (void)viewDidLoad { [super viewDidLoad]; //创建NSThread对象,方式1 NSThread * thread =[[NSThread alloc]initWithTarget:self selector:@selector(test3:) object:@"哈哈"]; [thread start];// //方式2 [NSThread detachNewThreadSelector:@selector(test) toTarget:self withObject:nil];// //方式3 [self performSelectorInBackground:@selector(test) withObject:nil]; }-(void)test3:(NSString *)str{ NSLog(@"%@ %@",str,[NSThread currentThread]);}-(void)test{ NSLog(@"哈哈");}对于这个创建线程的方法,大致步骤其实是这样的,创建了一个线程对象就表示在内存中已经有一个线程对象了,当我们调用[thread start]这个方法就表示这个线程进入了可调度的线程池中了。也就是说调用了start中,线程就进入了就绪状态,等待CPU的执行了,CPU调度当前线程的时候,线程就进入了运行状态,当你运行的程序比较耗时的时候,CPU会分步执行就是说先执行一部分,然后把那一部分的状态保存起来,然后CPU再去执行其他线程,你的线程又进入了就绪状态。如果我们在方法中调用了sleep方法就表示这个线程进入了堵塞状态,当过了睡眠的时间就会又回到了就绪状态
NSThread * thread =[[NSThread alloc]initWithTarget:self selector:@selector(test3:) object:@"哈哈"]; [thread start];
当我们在方法调用[NSThread sleepForTimeInterval:2];的时候能让当前线程进入堵塞状态,先休眠两秒钟,当我们调用[NSThread exit]; 能让线程强制退出。进入死亡状态。
当线程执行完毕之后就无法再次使用了。
线程有个属性是名字,我们可以给线程取个名字直接这么做就可以了,当然用这个前提是我们能获取到线程的对象。当给线程取名字之后,可以很快的去确定这个错误是由哪个线程引发的。
thread.name=@"线程1";在程序运行期间,系统会自己的帮我们创建一些辅助的线程.
设置线程的优先级,默认是0.5,取值范围是0.0到1.0,线程的优先级只是在内核调度的算法在决定运行哪个线程的时候,会把线程的优先级作为一个考核的因素,较高线程的优先级比较低线程的优先级有更多的执行机会,较高的优先级不能保证你线程具体的执行时间,只是比较于优先级比较低的线程,它更有可能被调度器去选择执行。
thread.threadPriority=1.0;
阅读全文
0 0
- ios-创建线程的基本方法和线程的状态以及属性
- day10 反射创建数组 线程的基本概念 线程的编写和启动方式 线程的运行状态以及状态转换方法 线程的调度和优先级设置
- 线程的创建、线程的基本方法、
- 创建线程可分离状态的属性
- 线程的创建 以及 线程的各种状态
- java多线程的创建方法和线程的状态
- 线程的创建、等待、终止以及属性
- 线程的创建状态
- iOS 【Multithreading-创建线程的方式/线程状态(了解)】
- 线程的属性和方法
- 5.线程的属性和状态
- Java 线程的基本状态和操作
- Java 线程的基本概念 创建方法 和 基本操作
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- LaTeX技巧353:图片标题的字体大小怎么设定呢?
- CAM350导入allegro输出的.ROU文件问题
- 《算法导论》第四章-第6节_练习(参考答案)
- UML学习(四)-----状态图
- 基于Ignite+Lucene+Log4j2的分布式统一日志查询最佳实践
- ios-创建线程的基本方法和线程的状态以及属性
- 保存日志
- 广播监听网络和断点续传
- SQL Server 2008“阻止保存要求重新创建表的更改”
- weui 时间控件含全天 上午 下午 选择
- sql server实现循环功能
- activeMQ持久化mysql配置
- Android 自定义控件之自定义组合控件
- JDK1.5/1.6/1.7之新特性总结