最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS多線程介紹

 更新時(shí)間:2016年05月15日 15:43:27   作者:湖南金剛  
這篇文章主要介紹了iOS多線程的相關(guān)知識(shí),涉及到對進(jìn)程,線程等方面的知識(shí)講解,本文非常具有參考價(jià)值,感興趣的朋友一起學(xué)習(xí)吧

一、前言部分

最近在面試,重新溫習(xí)了一遍多線程,希望加深一遍對于多線程的理解。

1、什么是進(jìn)程?

1).要了解線程我們必須先了解進(jìn)程,通俗來講進(jìn)程就是在系統(tǒng)中運(yùn)行的一個(gè)應(yīng)用程序。

2).每個(gè)線程之間是獨(dú)立存在的,分別運(yùn)行在其專用的且受保護(hù)的內(nèi)存空間中。

3).比如打開QQ或Xcode系統(tǒng)會(huì)分別開啟兩個(gè)進(jìn)程 如圖:

4)、我們可以通過"活動(dòng)監(jiān)視器"查看Mac系統(tǒng)中所開啟的進(jìn)程。

2、什么是線程?

1).一個(gè)進(jìn)程要想執(zhí)行任務(wù)必須得有線程,即一個(gè)進(jìn)程至少要有一個(gè)線程。

2).線程是進(jìn)程的基本執(zhí)行單元,一個(gè)進(jìn)程(程序)的所有任務(wù)都是在線程中執(zhí)行的。

3).比如使用酷狗播放音樂、使用迅雷下載電影都需要在線程中運(yùn)行 如圖:

3、什么是線程的串行?

1).一個(gè)線程中任務(wù)是串行執(zhí)行的(順序執(zhí)行)的,也就是說一個(gè)線程同一時(shí)間內(nèi)只能執(zhí)行一個(gè)任務(wù)。

2).串行執(zhí)行圖解,比如一個(gè)線程下載3個(gè)文件(文件A、B、C)

4、什么是多線程?

1).一個(gè)進(jìn)程中可以開啟多個(gè)線程,每個(gè)線程可以并發(fā)(同時(shí))執(zhí)行不同的任務(wù)。

2).類似關(guān)系列舉:進(jìn)程---->車間;線程---->車間工人

3).多線程圖解,比如同時(shí)開啟3個(gè)線程分別下載3個(gè)文件(文件A、B、C)

5、多線程原理

1).同一時(shí)間CPU只能執(zhí)行一個(gè)線程,只有一個(gè)線程在工作(執(zhí)行)。

2).多線程并發(fā)(同時(shí))執(zhí)行,其實(shí)是CPU快速的在多個(gè)線程之間調(diào)度(切換)。

3).如果CPU調(diào)度線程的速度夠快,就會(huì)造成多線程并發(fā)執(zhí)行的假象。

4).多線程的缺點(diǎn):

1、每個(gè)線程都會(huì)占用一定的內(nèi)存空間(默認(rèn)情況下:主線程占用1MB,子線程占用512KB),

如果開啟線程過多會(huì)占用大量的內(nèi)存空間因而造成程序性能降低。

2、線程越多CPU調(diào)度線程上的開銷就越大(類似工廠工人越多,工廠開銷也越大)。

3、使程序設(shè)計(jì)更復(fù)雜:比如多線程的數(shù)據(jù)通信,多線程之間的數(shù)據(jù)共享。

5).多線程的優(yōu)點(diǎn):

1、能適當(dāng)提高程序的執(zhí)行效率。

2、能適當(dāng)提高資源利用率(CPU、內(nèi)存的利用率)

6、什么是主線程?

1).一個(gè)iOS程序開啟后默認(rèn)會(huì)開啟一個(gè)線程,這個(gè)線程被稱為"主線程"或"UI線程"。

2).主線程的主要作用:

1、顯示/刷新UI界面

2、處理UI事件(比如點(diǎn)擊事件、滾動(dòng)事件、拖拽事件等)

3).主線程注意點(diǎn):

1、別將耗時(shí)的操作放在主線程中,耗時(shí)操作放在主線程中會(huì)造成程序卡頓的問題。

7、耗時(shí)操作Demo演示

1)、直接在主線程中運(yùn)行的Demo

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//獲取當(dāng)前執(zhí)行方法和當(dāng)前線程
//number== 主線程
//number!= 其他線程、子線程、次線程
NSLog(@"%s----%@",__func__,[NSThread currentThread]);
//直接在主線程中運(yùn)行 造成UI操作卡頓
[self longTimeOperation];
}
#pragma mark-耗時(shí)操作
-(void)longTimeOperation{
for (int i=; i<; i++) {
NSLog(@"%d",i);
}
}

2)、在子線程中運(yùn)行的Demo

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

以上內(nèi)容是小編給大家介紹的ios多線程知識(shí),希望對大家有所幫助!

相關(guān)文章

  • Java源碼解析之LinkedHashMap

    Java源碼解析之LinkedHashMap

    LinkedHashMap是HashMap的子類,所以也具備HashMap的諸多特性.不同的是,LinkedHashMap還維護(hù)了一個(gè)雙向鏈表,以保證通過Iterator遍歷時(shí)順序與插入順序一致.除此之外,它還支持Access Order, ,需要的朋友可以參考下
    2021-05-05
  • JVM系列之String.intern的性能解析

    JVM系列之String.intern的性能解析

    這篇文章主要介紹了JVM系列之String.intern的性能解析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Log4j不同模塊輸出到不同的文件中

    Log4j不同模塊輸出到不同的文件中

    這篇文章主要介紹了Log4j不同模塊輸出到不同的文件中 的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • Spring Cloud入門系列服務(wù)提供者總結(jié)

    Spring Cloud入門系列服務(wù)提供者總結(jié)

    這篇文章主要介紹了Spring Cloud入門系列之服務(wù)提供者總結(jié),服務(wù)提供者使用Eureka Client組件創(chuàng)建 ,創(chuàng)建完成以后修改某文件,具體操作方法及實(shí)例代碼跟隨小編一起看看吧
    2021-06-06
  • Java多線程三種主要實(shí)現(xiàn)方式解析

    Java多線程三種主要實(shí)現(xiàn)方式解析

    這篇文章主要介紹了Java多線程三種主要實(shí)現(xiàn)方式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java log4j詳細(xì)教程

    Java log4j詳細(xì)教程

    日志是應(yīng)用軟件中不可缺少的部分,Apache的開源項(xiàng)目log4j是一個(gè)功能強(qiáng)大的日志組件,提供方便的日志記錄。在apache網(wǎng)站:jakarta.apache.org/log4j 可以免費(fèi)下載到Log4j最新版本的軟件包
    2015-11-11
  • Java報(bào)錯(cuò)Java.text.ParseException的解決方法匯總

    Java報(bào)錯(cuò)Java.text.ParseException的解決方法匯總

    在Java開發(fā)的復(fù)雜世界中,錯(cuò)誤處理是開發(fā)者必須面對的關(guān)鍵挑戰(zhàn)之一,其中,Java.text.ParseException就像一個(gè)隱藏在代碼叢林中的陷阱,常常讓開發(fā)者們陷入困惑,本文給大家介紹了Java報(bào)錯(cuò)Java.text.ParseException的解決方法,需要的朋友可以參考下
    2024-10-10
  • spring security中的csrf防御原理(跨域請求偽造)

    spring security中的csrf防御原理(跨域請求偽造)

    這篇文章主要介紹了spring security中的csrf防御機(jī)制原理解析(跨域請求偽造),本文通過實(shí)例代碼詳解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Springboot使用influxDB時(shí)序數(shù)據(jù)庫的實(shí)現(xiàn)

    Springboot使用influxDB時(shí)序數(shù)據(jù)庫的實(shí)現(xiàn)

    項(xiàng)目中需要存放大量設(shè)備日志,且需要對其進(jìn)行簡單的數(shù)據(jù)分析,信息提取工作,所以本文就介紹一下Springboot使用influxDB時(shí)序數(shù)據(jù)庫,感興趣的可以了解一下
    2021-08-08
  • SpringBoot實(shí)現(xiàn)PDF添加水印的三種方法

    SpringBoot實(shí)現(xiàn)PDF添加水印的三種方法

    本文主要介紹了SpringBoot實(shí)現(xiàn)PDF添加水印的三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論

磐石市| 民和| 涪陵区| 云南省| 赤城县| 永康市| 梁平县| 元阳县| 台南市| 普陀区| 寻乌县| 靖宇县| 太谷县| 突泉县| 搜索| 石嘴山市| 东乌珠穆沁旗| 寻甸| 广西| 迁安市| 历史| 墨竹工卡县| 正阳县| 三门县| 饶阳县| 那曲县| 屏南县| 磐石市| 岐山县| 嘉善县| 勃利县| 庆阳市| 甘肃省| 吉水县| 康保县| 新泰市| 民和| 扬州市| 边坝县| 天台县| 象州县|