多線程-線程概念

一:進程與線程的區別

     進程是資源分配的最小單位,線程是資源調度的最小單位。一個程序的生命週期,對應着進程的創建,運行,中止。進程擁有獨立的地址空間,同一進程下的多個線程共享進程的地址空間。

二:線程的生命週期

 如上圖所示,線程有6個狀態:分別是新建狀態,就緒狀態,運行狀態,阻塞狀態,等待狀態,超時等待狀態,中止狀態。

  新建狀態:當new一個線程對象時,此時線程出於新建狀態(Thread t=new Thread();)。

 (就緒狀態,運行狀態):t.start(),當執行start()方法此時線程處於就緒,當線程獲取的cpu的時間片時,此時線程處於運行狀態。(Java將操作系統中線程的就緒與運行合併爲運行狀態)

  阻塞狀態:當多個線程競爭鎖時,沒有競爭到鎖的線程會處於阻塞狀態。

  等待狀態:線程運行中調用wait(),join()方法處於等待狀態。

  超時等待:線程運行中調用sleep(time),wait(time)方法時會處於超時等待狀態。

  中止狀態:當線程執行完run()方法後線程會生命週期會結束。

三:線程的創建方法

      java創建線程有三種方式。

        繼承Thread類,實現Runable接口,實現Callable接口(可以實現回調)

        在生產環境中用的最多的是通過線程池執行線程任務。

四:總結

     線程概念這部分比較簡單,主要是瞭解線程生命週期的各個狀態之間的轉換,在生產環境dump線程信息時,便於定位問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章