多線程的概念:多線程
1.進程 —》車間 ,線程 —》 車間工人 (多個工人)併發
2.cpu 只能處理1條線程,cpu能夠快速的在線程之間切換,因此形成了併發執行的錯覺。app
3多線程的優缺點性能
多線程的優勢spa
能適當提升程序的執行效率線程
能適當提升資源利用率(CPU、內存利用率)設計
多線程的缺點code
開啓線程須要佔用必定的內存空間(默認狀況下,主線程佔用1M,子線程佔用512KB),若是開啓大量的線程,會佔用大量的內存空間,下降程序的性能blog
線程越多,CPU在調度線程上的開銷就越大進程
程序設計更加複雜:好比線程之間的通訊、多線程的數據共享
4.多線程在iOS開發中的應用
主線程:一個iOS程序運行後,默認會開啓1條線程,稱爲「主線程」或「UI線程」
主線程的主要做用
顯示\刷新UI界面
處理UI事件(好比點擊事件、滾動事件、拖拽事件等)
主線程的使用注意:別將比較耗時的操做放到主線程中。
耗時操做會卡住主線程,嚴重影響UI的流暢度,給用戶一種「卡」的壞體驗
5.代碼示例
1 // 2 // YYViewController.m 3 // 01-阻塞主線程 4 // 5 // Created by apple on 14-6-23. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 - (IBAction)btnClick; 13 @end 14 15 16 @implementation YYViewController 17 18 19 - (void)viewDidLoad 20 { 21 [super viewDidLoad]; 22 } 23 24 25 //按鈕的點擊事件 26 - (IBAction)btnClick { 27 //1.獲取當前線程 28 NSThread *current=[NSThread currentThread]; 29 //2.使用for循環執行一些耗時操做 30 for (int i=0; i<10000; i++) { 31 //3.輸出線程 32 NSLog(@"btnClick---%d---%@",i,current); 33 } 34 } 35 36 @end