1. 程式人生 > >同步與非同步的區別

同步與非同步的區別

背景:當多個執行緒需要訪問同一個資源時,需要某種順序來確保該資源在某一時刻只能被一個執行緒使用,否則後果不可預料。這個時候需要對資料進行同步。同步機制能夠保證資源的安全性。

同步:實現同步操作,需要獲得每一個執行緒物件的鎖,這樣能確保在同一時刻只有一個執行緒能夠進入臨界區(互斥資源的程式碼塊),其他執行緒需要等這個執行緒退出臨界區,鎖才能釋放,等待佇列中其他優先順序高的執行緒才能獲得該鎖,從而進入臨界區。(使用synchronize關鍵字來實現同步,但是會有很大的資源開銷甚至出現死鎖)。 實現同步操作的方法有兩種:①利用同步程式碼塊;②利用同步方法。

非同步:在程序輸入輸出處理時,不必關心其他執行緒的狀態或行為,也不必等待輸入輸出處理完畢才返回,這個時候可以進行非同步程式設計,能夠提