這個結果該如何分析呢?有兩個剩余票數為2
窗口1賣了1張火車票,還剩票數:2?
窗口1賣了1張火車票,還剩票數:1?
窗口1賣了1張火車票,還剩票數:0?
窗口3賣了1張火車票,還剩票數:2?
窗口2賣了1張火車票,還剩票數:3?
?這個結果該如何分析呢?有兩個剩余票數為2
窗口1賣了1張火車票,還剩票數:2?
窗口1賣了1張火車票,還剩票數:1?
窗口1賣了1張火車票,還剩票數:0?
窗口3賣了1張火車票,還剩票數:2?
窗口2賣了1張火車票,還剩票數:3?
?這個結果該如何分析呢?有兩個剩余票數為2
2019-04-28
舉報
2020-12-01
這都是線程不安全導致的
2019-08-05
視頻中 ticketsCont-- 是一個復合操作在多線程下可能交叉運行,內存可見性問題,可以學習這節課程?http://www.xianlaiwan.cn/learn/352
2019-07-25
我也出現這種問題了?
2019-05-19
課程中的代碼本身就沒有考慮線程安全問題,解決這個問題請搜索“線程安全”,以下內容是解釋你的程序運行結果(可能過程,因為多線程過程很復雜):
窗口3獲得運行機會,判斷此時剩余5張可以賣票,但此時被窗口2搶去了運行機會,窗口3減減得到4張余票,但是窗口1又搶得了機會,減減得到3張余票,此時3繼續運行,打印出余票3,窗口1和窗口2都打印了余票2,接下來的執行就和課程的差不多了。
這里如果考慮到原子操作,就不會出現你的這種問題,而你的這種問題出現的幾率很小,因為程序運行很快,分配的一點點時間片在此案例中的一個線程很容易就能執行完,就算執行不完,出現以上問題的概率也小。