方法呼叫和執行緒啟動的區別

2021-06-26 14:18:26 字數 374 閱讀 5972

要理解執行緒排程的原理,以及執行緒執行過程,必須理解執行緒棧模型。

執行緒棧是指某時刻時記憶體中線程排程的棧資訊,當前呼叫的方法總是位於棧頂。執行緒棧的內容是隨著程式的執行動態變化的,因此研究執行緒棧必須選擇乙個執行的時刻(實際上指**執行到什麼地方)。

下面通過乙個示例性的**說明執行緒(呼叫)棧的變化過程。

這幅圖描述在**執行到兩個不同時刻1、2時候,虛擬機器執行緒呼叫棧示意圖。

當程式執行到t.start();時候,程式多出乙個分支(增加了乙個呼叫棧b),這樣,棧a、棧b並行執行。

從這裡就可以看出方法呼叫和執行緒啟動的區別了。

執行緒 run 和start 方法的區別

閒話少嘮,先舉例子,再做總結。建立乙個執行緒 thread t1 new thread t1.run 只是呼叫了乙個普通方法,並沒有啟動另乙個執行緒,程式還是會按照順序執行相應的 t1.start 則表示,重新開啟乙個執行緒,不必等待其他執行緒執行完,只要得到cup就可以執行該執行緒。舉個兩個例子對...

關於擴充套件類呼叫方法和呼叫欄位的區別

擴充套件類呼叫方法具體呼叫父類還是子類的方法是由物件的實際類決定的而不是由引用型別決定的。如 m類是父類,子類n繼承自m類,在子類n的主方法中建立乙個新的物件且用父類定義子類的引用變數同時呼叫父類和子類的test 函式,寫成 如下 n k new n m q k 因為k和w的實際物件都是一樣的,它們...

執行緒的啟動和結束

生命週期 建立 就緒 執行 阻塞 終止 狀態標識 new runnable running blocked,timed waiting,wating terminated wating 呼叫wait,join,notyfy blocked synchroinzed lock timed waitin...