1樓:小琳
屬於,繼承屬於執行緒生命週期階段。
執行緒的生命周者輪備期,繼承thread建立執行緒和實現runnable建立執行緒的方式物件鎖的對比。
執行緒桐悶的生命週期:
1.新建:使用new建立物件,2.準備就緒:呼叫了start()方法,但還沒有搶佔到cpu資源。
3.執行:呼叫了start()方法並搶佔到了cpu資源,開始執行。
4.阻塞:呼叫 sleep()/wait()方法,使執行緒讓出cpu資源並進入休眠狀態,可呼叫notity()方法使執行緒進入到準備就緒狀態。
5.銷燬:run方法執行結束或呼叫 stop()方法後,執行緒已經不在使用,成為了垃圾執行緒,將gc**。
兩種建立執行緒的方法在使用同步鎖的對比。
實現了runnable介面的類建立執行緒:
因在建立多個執行緒時,實現runnable介面的類只須要建立乙個,所以它的鎖物件預設為 this
繼承了thread類的類,在建立執行緒時,如果使用了同步鎖,那麼它預設鎖物件預設為 類名。class,原因在於繼承了thread的類在建立執行緒時,每建立乙個執行緒建立了乙個新的物件,要保證它的鎖是固定的首毀,所以它的預設鎖物件就是 類名。class。
2樓:帳號已登出
從之前的案例我們瞭解到多執行緒的作用優勢,這裡我們更詳細的瞭解執行緒的建立和結束。
執行緒的生命週期主要分為以下幾個階段:
新建(new thread)
就緒(runnable)
執行(running)
堵塞(blocked)
死亡(dead)
之前我們的案例中直接的看到的以上狀態有「新建、死亡」,那麼其他狀態是怎麼樣子的呢?下面我們逐個詳細講解。
新建。新建執行緒的方法有幾種,一種就是繼承thread,一種就是實現runnable介面,還有執行緒池等方法。之前的案例,我們就是使用的匿名內部內thread來啟動的執行緒。
嫌悔但是使用關鍵字new建立乙個thread物件時,此時它並不處於執行狀態,因為它沒有呼叫start方法啟動該執行緒。所以這裡我們可以這樣認為,使用new之後沒有使用start啟動的執行緒,都是屬於處在新建狀態的執行緒。
就緒。使用new新建執行緒之後,其實只是準別新建執行緒,真正在jvm程序中建立乙個執行緒是在我們使用start啟動之後。但是很多人在這裡有認識誤區,以為使用start啟動之後,執行緒就啟動了,在認知中就緒是很容易被忽略的。
其實使用start之後,執行緒只是進入了可以被執行的狀態而已。並不是已使用start就開始執行,主要的原因是我們的所有執行緒和程序都受到cpu的管理。慶者則如果cpu一直在執行其它任務,並沒有來呼叫該執行緒,那麼從start之後到被呼叫之前就叫做就緒。
執行。當cpu在執行佇列中選中了執行緒之後,我們的執行緒就進入了執行狀態。可能如果使用cpu排程譽棚之類的說比較抽象,不容易觀察。
那麼我們可以根據之前案例來了解。比如之前我們使用的案例,乙個在看書,乙個在聽**。這是兩個執行緒的,當我們觀察到兩個while迴圈在不斷執行的時候那就是執行緒的執行。
阻塞。多數的執行緒阻塞都是人為使用手段進行干預造成的,但是這也是我們編寫程式不可以缺少的一部分,就上文中的案例中,我們可以看到while死迴圈是個一小會列印一行,個一小會列印一行,這個輸出結果其實就是我們在其中使用阻塞完成的。
一般使執行緒阻塞的方法以下幾種:
sleep或者wait,上文用的就是sleep,使執行緒休息一秒。
執行緒主動呼叫yield方法,放棄cpu執行。
獲取某個已。
軟體生命週期,軟體生命週期和軟體測試生命週期的區別是什麼
一般軟體的生命週期 開發 1 需求獲取 竟可能詳細的獲取需求,也就是客戶需要 什麼是軟體的生命週期?軟體生命週期分哪幾個階段 軟體的生命週期是指軟體的產生直到報廢或停止使用的生命週期。具體分為以下階段 一 問題定義 要求系統分析員與使用者進行交流,弄清 使用者需要計算機解決什麼問題 然後提出關於 系...
家蠶的生命週期大約多少天,蠶的生命週期大約為多少天?
家蠶的生命週期大約24 32天。蠶食桑後,幼蟲生長迅速,在適溫條件下,一頭蠶自孵化至吐絲結繭,大約6 9天蛻一次皮,共需約24 32天,約食下桑葉20 30g 合幹物5 6.2g 一般經四次眠和蛻皮,至生長極度時,體重約增加1萬倍。吐絲結繭是桑蠶適應環境而生存的一種本能。桑蠶是完全 昆蟲,一生經過卵...
植物的生命週期以什麼為終點,植物的生命週期正確的順序是什麼
植物的來生命週期以 自什麼為終點 壽命最短的bai是短命菊,沙漠中長期du乾旱,這種zhi植物的種子在早春稍有dao雨水溼潤的情況下,就趕緊萌芽生長,開花結實.整個一生的生命週期,只有短短的三四個星期.短命菊是世界上生命週期最短的植物之一,它的壽命還不到一個月.這種生活習性是它適應特殊生存環境的結果...