synchronized爲什麼能解決線程安全問題?

synchronized在英語中翻譯成同步,同步想必大家都不陌生。例如同步調用,有A,B兩個方法,必須要先調用A並且獲得A的返回值才能去調用B,也就是說,想做下一步,必須要拿到上一步的返回值。
同樣的道理,使用了synchronized的代碼,當線程t1進入的時候,另一個線程若t2想進入,就必須要得到返回值才能進入,怎麼得到返回值呢?那就要等t1出來了纔會有返回值。這就是多線程中常說的加鎖
使用synchronized的代碼我們可以想象成將他們放到了一個房間,我前邊所說的返回值就相當於這個房間的鑰匙,進入這個房間的線程同時會把鑰匙帶進去,當它出來的時候會將鑰匙仍在地上(釋放資源),然後其他線程過來搶鑰匙(爭奪CPU執行權),以此類推。

轉載自:https://www.cnblogs.com/rainie-love/p/8531667.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章