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