講師回答 / MartonZhang
從報錯中看是OpenJDK版本的問題,應(yīng)該是-f參數(shù)在你當(dāng)前版本的VM上不支持,如果要使用-f,貌似要JDK1.7以上,另外注意你的操作系統(tǒng)64位還是32位的,64位的貌似要加個參數(shù),具體記不清了,你google一下!
2015-02-17
講師回答 / MartonZhang
您好,加入volatile其實是通過加內(nèi)存屏障使得每次讀寫volatile變量都從主內(nèi)存中刷新,這樣可以保證volatile變量及其之前的變量值的改變可以被其它線程立即看到,這當(dāng)然前提是該變量是共享的,在這里可以保證不會出現(xiàn)打印出來的兩個或三個相同count值的情況,跟其他的沒有關(guān)系!
2015-02-10
講師回答 / MartonZhang
另外,第一種情況,你要搞清楚,Ingeger是不能作為同步的對象的,因為容易發(fā)生拆裝箱操作,比如你的count--,實際上相當(dāng)于Integer?count ?= new Integer(count-1);這個時候很明顯,new出了一個新的Integer對象,已經(jīng)不是原來的對象了,同步自然也就無效了!你可以去看下Integer的一些方法的源碼!或者看下一些書對拆裝箱部分的講解!
2015-02-10
看完了您的視頻,其中extends Thread 類的的那個例子設(shè)計的有缺陷.那三個火車票窗口應(yīng)該是共享那五張火車票,相當(dāng)于多個線程訪問同一個資源,您將票總數(shù)(ticketsCounts)設(shè)置為成員變量就是錯誤的,所以結(jié)果就是錯誤!期待您更嚴(yán)謹(jǐn)?shù)恼n程內(nèi)容
2015-02-04