前言
當(dāng)線程池的線程阻塞時,線程池會創(chuàng)建額外的線程,而創(chuàng)建、銷毀和調(diào)度線程所需要相當(dāng)昂貴的內(nèi)存資源,另外,很多的開發(fā)人員看見自己程序的線程沒有做任何有用的事情時習(xí)慣創(chuàng)建更多的線程,為了構(gòu)建可伸縮、響應(yīng)靈敏的程序,我們在前面介紹了線程也瘋狂-----異步編程。
但是異步編程同樣也存在著很嚴(yán)重的問題,如果兩個不同的線程訪問相同的變量和數(shù)據(jù),按照我們異步函數(shù)的實現(xiàn)方式,不可能存在兩個線程同時訪問相同的數(shù)據(jù),這個時候我們就需要線程同步。多個線程同時訪問共享數(shù)據(jù)的時,線程同步能防止數(shù)據(jù)損壞,之所以強(qiáng)調(diào)同時這個概念,因為線程同步本質(zhì)就是計時問題。
異步和同步是相對的,同步就是順序執(zhí)行,執(zhí)行完一個再執(zhí)行下一個,需要等待、協(xié)調(diào)運行。異步就是彼此獨立,在等待某事件的過程中繼續(xù)做自己的事,不需要等待這一事件完成后再工作。線程就是實現(xiàn)異步的一個方式。異步是讓調(diào)用方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程干其它的事情。