ios-创建线程的基本方法和线程的状态以及属性

- (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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值