程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 關於多線程生命周期原理

關於多線程生命周期原理

編輯:C#入門知識

平時我們經常聽說asp.net頁面生命周期,大致是 創建頁面類,打造頁面控件樹,渲染響應輸出頁面(當然裡面還有很多管道執行處理事件)最後呈現在我們面前就是一個網頁(也就我們通常說的頁面生命周期!)

今天本人談談多線程的生命周期,如有不對還望包涵,多多指教!

首先上上圖:

   class Program
    {
        
        static void Main(string[] args)
        {
            //創建線程
            Thread thread = new Thread(run); 
            thread.Start();
            //主線程代碼
            for (int i = 0; i < 100; i++)
            {
                Console.WriteLine("main--->"+i);
            }
           
        }

        static void run()
        {
            for (int i = 0; i < 100; i++)
            {
                Console.WriteLine("run"+i);
            }
        }
       
    }  

  

為什麼會出現這種輸出情況呢?當然你們會想到不是多線程嘛,當然是可以切換的(不錯一下,這裡也就所謂的異步線程,要是同步線程必須等待另外一個線程結束才行,因為生活有的東西也必須用到同步,取錢就類似),沒錯這是線程產生的效果,這時候可能你會問,它們為什麼輸出結果有長有段呢?

下面給出一個圖來說說明它們為什麼產生這種效果:

新建狀態:我們運行Main方法(也就是創建線程,他是一個主線)默認調statrt--->就緒狀態

就緒狀態:表示有權限獲取cpu的時間片,就是獲取cpu分配執行這個線程的時間(說到這裡你可能會明白一些東西,為什麼相互切,為輸它輸出多一點,它要輸出少一點!當然是分配的時間長短不一樣!)----->運行狀態

運行狀:也就是就緒狀態拿到cpu分配的時間片之後就進入運行狀態

如輸出:  main--->0 1  2 3  4 在輸入run 0 1 2 3  因為main線程分配的cpu時間片只有那麼一點時間如0.001s 運行狀態方法沒有執行完它的時間就用完了,從而進入

阻塞狀態,在去請求cpu分配執行時間片,當main時間片執行完了之後,thread線程它在創建的時候當然也分配時間。哥們你搞完了(搞完的是剛才的時間片哦),該我了!!!!

所以就一直這樣搞下去(當然接著上一次執行哦!),到線程銷亡(所以就出現我們看到的效果!)。

不從:上面輸出有長有短,就是獲取的cpu時間片長短不一樣!主線程的執行for 時候,執行到輸出 main 4 時間片就用完..同理run方也是一樣的!

下面上圖看程序輸出的不同結果!(看到效果再去看上面那個線程生命周期圖)

好了,就說到這裡,如有說的不對的地方,歡迎指出就好,方不要丟磚哦!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved