关于UI多线程

2016-07-05  本文已影响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表示

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

上一篇 下一篇

猜你喜欢

热点阅读