多線程的随機性列印結果分析:
Java的線程排程為搶占式排程,列印出來的多線程為随機性列印結果.
下面我們解釋一下多線程情況下的随機性列印結果:
當我們運作程式時,JVM找OS開辟一條main方法通向cpu的路徑,這條路徑叫主線程,cpu通過主線程執行main方法.
而main方法中我們建立了新的線程,新線程開辟了一條通向cpu的新路徑,用來執行run方法.(不知道run方法的請看如何建立多線程)
此時對于cpu而言就有了兩條優先級相同的執行路徑,cpu就有了選擇的權利,cpu喜歡誰就會執行那條路徑,我們控制不了cpu,是以就有了程式的随機列印結果.

多線程記憶體圖解:
程式運作,main方法壓棧.
// 建立線程對象
MyThread mt = new MyThread();
此時的new MyThread();是儲存在堆記憶體中的.
如果直接用mt調用run方法,則run方法會直接在main方法所在的棧記憶體中被壓棧,那麼就是單線程了,也就沒意義了.
如果用mt調用start方法,則會開啟新的棧記憶體空間,在新的棧記憶體空間運作run方法.
再次建立新的線程對象進行調用start方法,會再次開啟新的棧記憶體空間,在新的棧記憶體空間運作run方法,以此類推.