DEMO地址
1. 串行隊(duì)列,同步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)束可以看到是在主線程順序執(zhí)行的
2. 串行隊(duì)列,異步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)論可以看到系統(tǒng)只開了一條線程,都是在線程3上執(zhí)行的,并且是順序執(zhí)行
3. 并發(fā)隊(duì)列,同步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)論可以看到是在主線程上順序執(zhí)行的,跟第一種結(jié)論是一樣的, 由此可以看出,開不開線程是同步換是異步控制的
4. 并發(fā)隊(duì)列,異步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)論看出開啟了多條線程并且是無序執(zhí)行的
5. 全局隊(duì)列,同步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)論可以看出是在主線程上順序執(zhí)行的
6. 全局隊(duì)列,異步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)論可以看出是開啟的多條線程,并且執(zhí)行的順序是混亂的,跟并發(fā)隊(duì)列異步執(zhí)行的結(jié)果是一樣的
7. 主隊(duì)列,同步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)論可以看出來,發(fā)生"死鎖"了,卡死了,卡死的原因是循環(huán)等待,主隊(duì)列的東西要等主線程執(zhí)行完,而因?yàn)槭峭綀?zhí)行不能開線程,所以下面的任務(wù)要等上面的任務(wù)執(zhí)行完,所以卡死。這是排列組合中唯一一個(gè)會(huì)卡死的組合
8. 主隊(duì)列,異步執(zhí)行
示例代碼:

運(yùn)行結(jié)果:

結(jié)論可以看出來是在主線程順序執(zhí)行的
總結(jié):
1, 同步開線程,異步不開線程,開不開線程是由同步換是異步控制的!
2, 開幾條線程,取決于串行隊(duì)列換是并發(fā)隊(duì)列,串行隊(duì)列只開一條線程,并發(fā)隊(duì)列開多條線程(異步情況下)
3, 主隊(duì)列只能在主線程下執(zhí)行任務(wù),不能再其他線程上執(zhí)行!
DEMO地址
