publicclassTestVol{publicvolatilestaticinti=0;publicstaticvoidmain(String[]args)throwsInterruptedException{System.out.println(TestVol.i);Threadt1=newThread(newTask(TestVol.i));Threadt2=newThread(newTask(TestVol.i));t1.start();t2.start();System.out.println(TestVol.i);Thread.sleep(12000);System.out.println(TestVol.i);}}代碼就是這樣很簡單。類里面神聲明一個(gè)變量i,創(chuàng)建兩個(gè)線程,Task任務(wù)類的工作是判斷如果i==0的話,就講i=123,但是我主方法變量i的時(shí)候,i的值還是0,并沒有被線程修改啊。不是說volatile修飾的變量是都是可見的嘛?
請(qǐng)教各位一個(gè)問題,求解答:為什么我的volatile關(guān)鍵字沒有體現(xiàn)出變量的可見性?各位有什么建議?
暮色呼如
2019-08-10 10:48:44