1、首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢? 舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後把所有的任務做完,多執行緒必定比單執行緒更耗費時間。為什麼?因為,多執行緒要在不同的任務之間切換,切換肯定是要耗費時間的。那麼問題來了,既然多執行緒比單執行緒更耗費時間,為什麼還要多執行緒? 單執行緒有乙個致命的問題,就是乙個執行緒執行的整個過程中,其他執行緒必須等待,不能響應使用者的命令,使用者體驗太差,好像電腦宕機一樣。假如單執行緒,你能想象一下,使用者在聽歌的時候不能寫文件,這種體驗也太差了。多執行緒的時候,單核cpu一會做這個任務,一會做那個任務,切換的時間是毫秒級的,使用者完全感覺不出來。從而給使用者照成錯覺,感覺這些任務並行的執行。
2、同步的使用場景:多個執行緒同時訪問一塊資料,也叫共享區。對於多個執行緒同時訪問一塊資料的時候,必須使用同步,否則可能會出現不安全的情況。比如資料庫中的髒讀。但是,多個執行緒同時訪問一塊資料,有一種情況不需要同步技術,那就是原子操作,也就是說作業系統在底層保證了操作要麼全部做完,要麼不做。
3、非同步的使用場景:只有乙個執行緒訪問當前的資料。比如,觀察者模式,沒有共享區,主題發生變化,通知觀察者更新,主題繼續做自己的事情,不需要等待觀察者更新完成後再工作。
同步 非同步 多執行緒
1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...
多執行緒 執行緒同步 非同步
同步和非同步 同步和非同步通常用來形容一次方法的呼叫。同步方法呼叫一旦開始,呼叫者必須完成所有的操作一直到方法呼叫結束,其他呼叫者才能繼續後續的行為,非同步方法呼叫類似乙個訊息傳遞,一旦開始,方法呼叫就會立即返回,其他呼叫者則可以無需等待,可以立即繼續後續的操作。非同步 不過,如果 我們 趕時髦,就...
同步 非同步 多執行緒 解釋
1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...