多线程经典问题之多窗口卖票
生活随笔
收集整理的這篇文章主要介紹了
多线程经典问题之多窗口卖票
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
需求:簡單的賣票程序,要實現多個窗口同時買票。?
一、方式一:?
1、問題:為什么50張票被賣出了150次??
2、出現的原因: 因為num是非靜態的,非靜態的成員變量數據是在每個對象中都會維護一份數據的,三個線程對象就會有三份。
3、解決方案:把num票數共享出來給三個線程對象使用。使用static修飾。
二、方式二:?
注意:靜態成員變量必須要定義在成員方法外,而不能定義在成員方法里。?
1、問題: 出現了線程安全問題 。
出現線程安全問題的根本原因:?
1)存在兩個或者兩個以上 的線程對象,而且線程之間共享著一個資源。?
2)有多個語句操作了共享資源。(如果只有單個語句操作共享資源,則不會出現線程安全問題)
2、線程安全問題的解決方案:sun提供了線程同步機制讓我們解決這類問題的。
線程同步機制詳解見下一篇。
轉載于:https://my.oschina.net/u/204616/blog/1586459
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的多线程经典问题之多窗口卖票的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql主从复制-mysqldump
- 下一篇: Bash中的whereis