(1)從線程的時效來看:分為同步和異步
同步:多個任務情況下,一個任務A執行結束,才可以執行另一個任務B。只存在一個線程。
異步:多個任務情況下,一個任務A正在執行,同時可以執行另一個任務B。任務B不用等待任務A結束才執行。存在多條線程。
(2)從線程的執行來看:分為串行隊列和並行隊列
串行隊列:串行隊列的特點是隊列內的線程是一個一個執行,直到結束。
並行隊列:並行隊列的特點是隊列中所有線程的執行結束時必須是一塊的,隊列中其他線程執行完畢后,會阻塞當前線程等待隊列中其他線程執行,然后一塊執行完畢。
(3)線程的時效與執行相結合:

圖片來源:https://blog.csdn.net/l540675759/article/details/62932901
(1)串行同步
圖1是串行同步的情況,隊列中的線程依次執行,並且主線程阻塞,等待任務的完成。
(2)並行同步
圖3是並行同步的情況,隊列中的線程,會一起執行,但是同一時段只能有一個線程執行其他線程等待,等所有任務執行完,主線程繼續執行。
同步(單線程)的串行並行區別在於:
1.並行增加了等待時間,如果等待時間到了,任務還在執行,那么,重新設置等待時間,繼續等待,不管等待的時候線程是否有空閑。
2.串行是對線程進行阻塞,一個任務執行完畢,線程不再阻塞,所以,不存在等待時間。
(3)串行異步
圖2是串行異步的情況,隊列中的線程依次執行,同時主線程還在繼續執行。
(4)並行異步
圖4是並行異步的情況,隊列中的線程,一起執行,主線程也會繼續執行。
異步(多線程)的串行並行區別在於:
1.串行異步只占用兩個線程,一個主線程,不會阻塞的線程,一個次線程,執行原理和同步串行一樣。
2.並行異步占用N個線程,多核CUP可以同時開啟多條線程供多個任務同時執行,互不干擾。
(4)同步的並行即為並發(常見於es7的async await與node的單線程)。
