程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> iOS多線程引見

iOS多線程引見

編輯:關於JAVA

iOS多線程引見。本站提示廣大學習愛好者:(iOS多線程引見)文章只能為提供參考,不一定能成為您想要的結果。以下是iOS多線程引見正文


1、媒介部門

比來在面試,從新復習了一遍多線程,願望加深一遍關於多線程的懂得。

1、甚麼是過程?

1).要懂得線程我們必需先懂得過程,淺顯來說過程就是在體系中運轉的一個運用法式。

2).每一個線程之間是自力存在的,分離運轉在其公用的且受掩護的內存空間中。

3).好比翻開QQ或Xcode體系會分離開啟兩個過程 如圖:

4)、我們可以經由過程"運動監督器"檢查Mac體系中所開啟的過程。

2、甚麼是線程?

1).一個過程要想履行義務必需得有線程,即一個過程至多要有一個線程。

2).線程是過程的根本履行單位,一個過程(法式)的一切義務都是在線程中履行的。

3).好比應用酷狗播放音樂、應用迅雷下載片子都須要在線程中運轉 如圖:

3、甚麼是線程的串行?

1).一個線程中義務是串行履行的(次序履行)的,也就是說一個線程統一時光內只能履行一個義務。

2).串行履行圖解,好比一個線程下載3個文件(文件A、B、C)

4、甚麼是多線程?

1).一個過程中可以開啟多個線程,每一個線程可以並發(同時)履行分歧的義務。

2).相似關系羅列:過程---->車間;線程---->車間工人

3).多線程圖解,好比同時開啟3個線程分離下載3個文件(文件A、B、C)

5、多線程道理

1).統一時光CPU只能履行一個線程,只要一個線程在任務(履行)。

2).多線程並發(同時)履行,實際上是CPU疾速的在多個線程之間調劑(切換)。

3).假如CPU調劑線程的速度夠快,就會形成多線程並發履行的假象。

4).多線程的缺陷:

1、每一個線程都邑占用必定的內存空間(默許情形下:主線程占用1MB,子線程占用512KB),

假如開啟線程過量會占用年夜量的內存空間因此形成法式機能下降。

2、線程越多CPU調劑線程上的開支就越年夜(相似工場工人越多,工場開支也越年夜)。

3、使法式設計更龐雜:好比多線程的數據通訊,多線程之間的數據同享。

5).多線程的長處:

1、能恰當進步法式的履行效力。

2、能恰當進步資本應用率(CPU、內存的應用率)

6、甚麼是主線程?

1).一個iOS法式開啟後默許會開啟一個線程,這個線程被稱為"主線程"或"UI線程"。

2).主線程的重要感化:

1、顯示/刷新UI界面

2、處置UI事宜(好比點擊事宜、轉動事宜、拖拽事宜等)

3).主線程留意點:

1、別將耗時的操作放在主線程中,耗時操作放在主線程中會形成法式卡頓的成績。

7、耗時操作Demo演示

1)、直接在主線程中運轉的Demo

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//獲得以後履行辦法和以後線程
//number== 主線程
//number!= 其他線程、子線程、次線程
NSLog(@"%s----%@",__func__,[NSThread currentThread]);
//直接在主線程中運轉 形成UI操作卡頓
[self longTimeOperation];
}
#pragma mark-耗時操作
-(void)longTimeOperation{
for (int i=; i<; i++) {
NSLog(@"%d",i);
}
}

2)、在子線程中運轉的Demo

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//獲得以後履行辦法和以後線程
//number== 主線程
//number!= 其他線程、子線程、次線程
NSLog(@"%s----%@",__func__,[NSThread currentThread]);
//將耗時操作放在子線程中履行,不影響UI的操作
[self performSelectorInBackground:@selector(longTimeOperation) withObject:nil];
}
#pragma mark-耗時操作
-(void)longTimeOperation{
for (int i=; i<; i++) {
NSLog(@"%d",i);
}
}

以上內容是小編給年夜家引見的ios多線程常識,願望對年夜家有所贊助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved