【協議時序】- SPI-READ讀操作-實驗
阿新 • • 發佈:2022-05-12
關於執行緒同步:
假設有1個英雄攻擊蓋倫且每次hp-1,可是蓋倫自身也在每秒回1hp,攻擊和回血兩個執行緒同時執行,執行緒結束後蓋倫的血量因還是10000,但是
分析原因:
在回血執行緒執行完時,hp=10001,但加血執行緒還未執行完時,減血執行緒又開始執行了,所以當加血執行緒執行完時hp=10001才對,可因為減血執行緒的加入導致hp=9999,此問題在業務上叫做髒資料。
解決方法:
在加血執行緒執行期間,減血執行緒對hp的值的訪問不被允許
在加血執行緒執行完成之後,才可被訪問;
synchronized物件又叫做同步物件
synchronized表示當前執行緒佔用著someobject
在佔用期間其他執行緒不可佔用someobject,直到執行緒
執行完畢並被釋放。
結束方式:程式碼塊自然結束或者有異常丟擲。
2、同步物件也可以換成其他物件
this表示當前同步的物件,也就是gailun
3、直接在方法前加上修飾符
這與2達成的效果一樣
如果一個類的方法中有用synchronized修飾的話,那麼此類
叫做執行緒安全的類。