美文网首页
关于UI多线程

关于UI多线程

作者: 隔壁家的老田 | 来源:发表于2016-07-05 00:07 被阅读0次

多线程并发的原理:同一时间内,cpu只能处理一件事情,多线程并发其实是cpu在多条线程间的调度,快速切换。

多线程的缺点  1——但如果线程过多,来回切换会大量消耗cpu的性能。2——创建线程有开销,在栈区(每条子线程占512K,主线程占1M(程序运行时,默认会开启一条线程,就是主线程)可以使用setStackSize方法来占用内存,必须是4K的倍数) 3——如果开启多条线程会降低程序性能(移动端一般开辟3条)  4——线程过多会使程序的结构更加复杂,例如线程通信

多线程的优点  1——能适当提高程序的执行效率 2——能适当提高资源的利用率

主线程的作用

1— 显示UI界面 2—处理事件

注意:耗时操作别放在主线程,会影响UI界面流畅度,影响用户体验

获得当前线程方法[NSThread currentThread]

-线程安全:多个线程访问同一片区域,就会出现安全问题,也叫作线程同步

需使用@synchronized(需锁住的对象),必须是同一把锁,缺点是要消耗大量的CPU资源

-NSThread

创建方法:

1.[[NSThread alloc] initWithTarget:self  selector:@selector(方法名)  Object:要传的参数];

2.[NSThread detachNewThreadSelector:@selector(方法名) target:self  withObject:nil]

隐式创建

3.[NSThread performSelectorInBackground:@selector(方法名) withObject:nil]

方法:阻塞线程两秒钟

[NSThread sleepForTimeInterVal:2]

[NSThread exit] 直接结束线程

-NSOperationQueue

创建方法

[NSBlockOperation blockOperationWithBlock^{}]

[NSOperationQueue alloc] init

[[NSInvocationOperation alloc] initWithTarget:self selection:@selection() object]

添加线程

addOperationQueueWithBlock:^{

};

回到主线程

[NSOperationQueue mainQueue]

-GCD

伟大的中枢调度器 GCD:主要有以下几种情况

异步:不在一个线程执行

同步:在同一个线程执行

串行:串在一起执行

并行:一起执行

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(queue,^{

});

这是一个C语言的方法,是平时开发中使用频率比较高的一种多线程创建方式

上面的这种方式属于异步并发,是GCD方法中最常用的一种异步通常用async表示,同步则以sync表示

以上就几种常用的多线程创建方法,和多线程的注意点,多线程是我们开发过程中非常需要注意的一点,所以希望对大家有帮助。下面附上一张图,能帮助你更好的理解。

相关文章

  • 多线程总结

    关于多线程 (一).多线程主线程:显示/刷新UI界面,处理UI事件子线程:处理耗时操作 例如网络访问[图片上传失...

  • 关于UI多线程

    多线程并发的原理:同一时间内,cpu只能处理一件事情,多线程并发其实是cpu在多条线程间的调度,快速切换。 多线程...

  • 线程通讯详解

    关于子线程能否更新UI的思考线程通讯详解线程池-多线程的高效使用姿势 上文我们说到了关于子线程中能否更新UI的问题...

  • iOS知识体系

    UI 网络 多线程

  • C# 多线程

    多线程怎么访问Ui线程 git地址下载代码

  • 探索Android开源框架 - 3. RxJava使用及源码解析

    相关概念 Android多线程编程的原则: 不要阻塞UI线程; 不要在UI线程之外访问UI组件; Reactive...

  • 面试题:Android 为什么设计只有主线程更新UI

    选择方案的选择 单线程更新UI 多线程更新UI 从问题本身考虑就两个方案不是单线程就是多线程。 下面是个人根据具体...

  • 关于子线程能否更新UI的思考

    关于子线程能否更新UI的思考 线程通讯详解 线程池-多线程的高效使用姿势 当大家被问到这个问题的时候可能就...

  • 多线程面试

    首先分析多线程的使用环境: 多线程处理包括Core Data的多线程访问,UI的并行绘制,异步网络请求以及一些在运...

  • 浅析Android 消息机制

    消息机制存在的意义 为什么不能在非UI线程中操作UI控件?因为Android的UI控件不是线程安全的,如果在多线程...

网友评论

      本文标题:关于UI多线程

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