JAVA-初步認識-第十二章-主線程運行樣本

來源:互聯網
上載者:User

標籤:width   不能   為什麼   main函數   過程   記憶體   概念   研究   增強   

一.

我們關注的重點在於主線程,我們一般不關注記憶體回收,因為這個動作是自動的,它是以什麼方式來判斷的呢?堆記憶體中一旦產生垃圾,它是不會立即去清理的,如果立即去清理的話會降低效率。因為記憶體回收在操作時,會和主線程搶奪cpu的控制權(擷取cpu的執行權)。在某一時刻誰拿到執行權,誰就操作。接下來就是什麼時候回收的呢?它會先判斷堆記憶體的空間大小,如果滿足一定的量就要進行釋放了。不釋放就裝不進去了,怕溢出,就要做自動釋放動作。

接下來用執行個體代碼來體現,(體現什嗎?)

只考慮主線程部分,

這裡DOS編譯啟動並執行結果都是主線程式控制制執行的。

現在畫一下多線程的圖,(不在畫堆了,直接對著棧研究),這裡的記憶體配置圖相較於以前的記憶體配置圖有了很大的增強。(這複雜的過程一直存在,以前沒有介紹)

並不是說沒有堆記憶體的產生,而是我們現在的重點在棧記憶體上。

棧記憶體畫好後,裡面就有主線程(虛擬機器啟動的時候,告訴大家要執行這個類,是不是先要啟動一條線程,它其實啟動多條線程,其中有一條是負責主函數的),所以這條線程啟動完了以後,就來了一個叫做main函數,(線程是在程式碼運行之前啟動的,因為它要控制整個運行流程。)

其實這裡面有條路徑,(這玩意兒怎麼畫呢?)無所謂了,反正執行過程是一樣的。當我們在main裡面建立兩個對象,注意建構函式我是不畫(首先堆記憶體沒畫,裡面的對象也沒畫。對象建立時的構造是要在棧記憶體中畫的,現在也省略了。)當我們d調用show的時候,show就進棧了,show進棧還是依賴主線程,(有可能構造器進棧都是依賴主線程)

(對圖解進行了修改,棧記憶體中不應該從上往下畫執行路徑,看著好像是從上往下執行,應該是程式碼從上往下執行)

首先是主線程先進棧(主線程為什麼會有進棧的概念?),緊跟著show方法就進棧了。這就要執行show去了,show沒執行完,能執行到主函數嗎?是不可能的。

這個show一執行完就出棧了,出棧後,主函數繼續執行。執行的是d2.show,這時show方法再次進棧,執行完以後,再次出棧。之後,有一個return,執行後主函數出棧了。這個時候,已經沒有可執行內容了,主線程就結束了(貌似主線程對應的就是主函數裡面的代碼),主線程一結束,沒有內容的情況下,虛擬機器把這個進程就關閉了,(我們不說底層的內容,那是虛擬機器自動掌管的)

現在我們有一個這樣的擔心,出現這樣的問題該怎麼解決呢?比如說,當我們的程式在向下啟動並執行過程中,遇到了一個圈(如所示),話句話說,它是一個迴圈,它要迴圈好多次。一旦轉起來,下面就無法執行了。這就意味著下面的代碼運行不到,我們想要運行到。不想因為這個迴圈在這,耽誤時間,怎麼辦?

這個時候,我們就有可能要單獨搞一條執行路徑。來負責這段內容的執行。

左邊是主線程,右邊是自己建立的線程,或者說自己定義的線程,那麼有這個迴圈情況嗎?現在示範的看一下,

(修改了程式,來示範一下)

整個DOS的結果是慢慢地往外蹦。

現在我的需求是什麼樣的呢?正因為有程式不斷地在圈那兒停止,不斷地去運行,而不往下走,導致我這程式比較慢。那麼,我們就想說,能不能實現“旺財”和xiaoqiang同時執行呢?這就是我們的需求,

如何能實現“旺財”和xiaoqiang同時執行,是不是需要做一個動作,xiaoqiang在一個路徑當中,旺財要執行的代碼在另外一個代碼當中,是不是就可以完成這個動作啦,cpu在兩個路徑上進行切換。該如何建立一條新的路徑呢?

 

JAVA-初步認識-第十二章-主線程運行樣本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.