• 移动开发在路上-- IOS移动开发系列 多线程二


    最近太忙没太多的时间,忙碌的码农生活空下来一点时间,都会挤出来看一些技术或者咨询的文章,废话不多说,直奔主题。

    接着上一次的继续说。

    定时器在多线程的使用

    NSRunLoop 是线程相关的基础框架的一部分。一个run loop 就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。

    线程的生命周期存在五个状态:新建、就绪、运行、阻塞、死亡。

    NSRunLoop 可以保持一个线程一直为活动状态,不会马上销毁掉。

    一般在(延时调用一个方法、定时器)

    run loop 属于一个调度 例如延时5s    run loop ji'lu记录这个时间去延时调用这个方法

    定时器   例如每隔1s来执行一个事件

    那么今天我们主要说一下定时器在多线程的使用

    在多线程里边如果要使用定时器必须开启RunLoop,因为只有开启RunLoop保持线程为活动状态,才能保持定时器能不断执行。

    有些面试题上边可能会问,一个定时器1s精不精确,是不是真的一秒钟调用一次,有没有延迟?那么为什么会有延时呢?一个定时器在主线程上边,每隔一秒调用一次,因为是主线程,他做的事情特别多,难免会有阻塞的情况,加入主线程阻塞了0.1秒那么你这个定时器就不准确了。开一个多线程去运行定时器,那么肯定是精确地。

    献给一段示例代码

    -(void)runThread{

      NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];

      [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeAction) userInfo:nill repeats:YES];

      [[NSRunLoop currentRunLoop] run];//这里一定要RunLoop一下要不然程序走到这里一直走下去程序就结束掉了、所以说必须RunLoop一下、来保持这个线程的活跃

    }

    创建新项目

    项目的创建,我在这里就不再说了上一篇文章中说的很详细,大家应该能看得明白,没看过的可以看一下

    移动开发在路上-- IOS移动开发系列 多线程一

    代码如下

    线程直接就结束掉了 

    把代码打开

    在运行

    是不是达到了我们的效果

    期待大家的继续支持,只有大家的鼓励才是我最大的动力!

    分享快乐!支持我吧!觉得有用的话记得点推荐一下哦!

    作者:zhangwenjian
    出处:http://www.cnblogs.com/zhangwenjian
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

  • 相关阅读:
    同一根域名的多站点登录共享
    mysql忘记管理员密码
    使用Cacti监控你的网络(四) Cacti脚本及模板
    使用Cacti时常见的问题集
    SQL Server:SQL Like 通配符特殊用法:Escape
    IS6.0 应用程序池Web园导致Session丢失
    VMware建立虚拟机无法上网
    SqlServer 添加用户 添加角色 分配权限
    教你如何在SQL Server数据库中加密数据
    sendmail邮件服务器搭载smtp和pop3认证的配置方法
  • 原文地址:https://www.cnblogs.com/zhangwenjian/p/3624199.html
Copyright © 2020-2023  润新知