美文网首页
iOS多线程-NSThread

iOS多线程-NSThread

作者: 雪影无痕 | 来源:发表于2021-08-24 15:12 被阅读0次

·NSThread 每个NSThread对象对应一个线程,量级较轻

·优点:NSThread 比其他两个轻量级,使用简单

·缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销

//    创建方式一,有线程对象,需手段开启线程

    NSThread *thread = [[NSThread alloc] initWithTarget:selfselector:@selector(threadAc1:) object:@"thread1"];

    thread.name=@"thread1";

    //手动开启线程

    [threadstart];

    //线程的大小

//    thread.stackSize

    //方式二:没有创建线程对象,自动开启线程

    [NSThread detachNewThreadSelector:@selector(threadAc2:) toTarget:self withObject:@"thread2"];

    //方式三:block创建方式没有创建线程对象,自动开启线程

    [NSThread detachNewThreadWithBlock:^{

        for(inti =0; i <50; i ++) {

            NSLog(@"thread3:%d",i);

        }

    }];

//    方式四

    [selfperformSelectorInBackground:@selector(threadAc3:) withObject:@"3"];

    //回到主线程设置UI

    [self performSelectorOnMainThread:@selector(threadAc4:) withObject:@"4" waitUntilDone:YES];

}

- (void)threadAc1:(NSString*)str{

    NSLog(@"线程%@",[NSThread currentThread]);

    for(inti =0; i <50; i ++) {

        NSLog(@"thread1:%d",i);

        if(i ==20) {

            //休眠2秒后开始执行

            [NSThread sleepForTimeInterval:2];

        }elseif(i ==40){

            //退出线程

            [NSThreadexit];

        }

    }

    //当前线程是否是多线程

    if ([NSThread isMultiThreaded]) {

        NSLog(@"开启多线程了%@ ",str);

    }

    //当前线程是否为主线程

//    [NSThread isMainThread];

}

- (void)threadAc2:(NSString*)str{

    NSLog(@"线程%@",[NSThread currentThread]);

    for(inti =0; i <50; i ++) {

        NSLog(@"thread2:%d",i);

    }

    if ([NSThread isMultiThreaded]) {

        NSLog(@"开启多线程了%@ ",str);

    }

}

- (void)threadAc3:(NSString*)str{

    NSLog(@"线程%@",[NSThread currentThread]);

    for(inti =0; i <50; i ++) {

        NSLog(@"thread3:%d",i);

    }

    if ([NSThread isMultiThreaded]) {

        NSLog(@"开启多线程了%@ ",str);

    }

}

- (void)threadAc4:(NSString*)str{

    NSLog(@"线程%@",[NSThread currentThread]);

    for(inti =0; i <50; i ++) {

        NSLog(@"thread4:%d",i);

    }

    if ([NSThread isMultiThreaded]) {

        NSLog(@"开启多线程了%@ ",str);

    }

}

相关文章

  • iOS多线程篇:NSThread

    iOS多线程篇:NSThread iOS多线程篇:NSThread

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • 多线程之--NSOperation

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程之--NSThread

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程(三)-NSThread

    iOS多线程(二)-NSThread

  • OC_NSThread

    原文链接:iOS多线程--彻底学会多线程之『pthread、NSThread』 **NSThread **是苹果官...

  • iOS多线程-GCD实践

    推荐文章 iOS多线程-NSThread实践 iOS多线程-NSOperation实践 Grand Central...

  • 线程

    iOS 多线程:『GCD』详尽总结 NSThread详解 IOS 多线程编程 『NSOperation、NSOpe...

  • iOS多线程04-NSOperation实践

    推荐文章 iOS多线程01-介绍iOS多线程02-NSThread实践iOS多线程03-GCD实践iOS多线程04...

  • iOS多线程.md

    2018-05-22 iOS多线程-概念iOS多线程:『pthread、NSThread』详尽总结 多线程-概念图...

网友评论

      本文标题:iOS多线程-NSThread

      本文链接:https://www.haomeiwen.com/subject/qzpdiltx.html