線程的安全問題
線程的安全問題
同步代碼塊
- 不使用同步代碼塊,當要寫共享數據的程序時會有重複或者異常問題產生
- 使用"同步代碼塊"
- 把操作共享數據的程式碼鎖起來
- 小細節:
- synchronized代碼不能放在while外面
- 放在外面,窗口1一進去,就是霸佔整個while
- 同時也是因為synchronized鎖住窗口1
- 等窗口1賣完,才會讓其他對象進去
- 鎖的對象一定要唯一!
- 若每個線程對應的鎖不同,就等於沒鎖
- 大家都可以進去,跟沒鎖一樣
- 常用的鎖 -> 自己這個類的class字節碼對象 -> 必定唯一
- synchronized代碼不能放在while外面
同步方法
- 就是把synchronized關鍵字加到方法上