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