程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JAVA線程----基礎,java線程----

JAVA線程----基礎,java線程----

編輯:JAVA綜合教程

JAVA線程----基礎,java線程----


線程簡介:

  現在個人計算機操作系統多采用多任務和分時設計。一般可以在 同一時間內執行多個程序的操作系統都有進程的概念。一個進程就是一個執行中的程序,而每一個進程都喲自己獨立的一塊內存空間、一組系統資源。在進程概念中,每一個進程的內部數據和狀態都是完全獨立的。Java程序通過流控制來執行程序流,程序中單個順序流控制稱為線程;多線程則是指單個程序中可以同時運行多個不同的線程,執行不同的任務。多線程意味著一個程序的多行語句幾乎可以在同一時間內運行的。

  線程與進程相似,是一段完成某個特定功能的代碼,是程序中當個順序的流控制。但與進程不同的是,同類的多個線程是共享一塊內存空間和一組系統資源的,線程本身的數據通常只有微處理器的寄存器數據,以及一個供程序執行時使用的堆棧。所以系統在產生一個線程,或者在各個線程之間切換時,負擔要比進程小得多,正因為如此,線程被稱為輕負荷進程。一個進程中可以包含多個線程。

  一個線程是一個程序內部的順序控制流。

(1)、進程:每個進程都有自己的代碼和數據空間(進程上下文),進程切換的開銷大。

(2)、線程:輕量級進程,同一類線程共享代碼和數據空間,每個線程有獨立的運行棧和程序計數器,線程切換開銷小。

(3)、多進程:在操作系統中,能同時運行多個任務程序;

(4)、多線程:在同一應用程序中,有多個順序流同時執行;

 

線程的狀態:

  Java使用Thread類及其子類的對象表示線程,線程在它的一個完整的生命周期中通常要經歷如下的四種狀態:

1.創建狀態

  當一個Thread類或其子類的對象被聲明並創建時,例如執行下列語句時,線程就處於創建狀態:

  Thread myThread=new MyThreadClass();

當一個線程處於創建狀態的時候,它僅僅分配內存資源,並不能執行。

2.可運行狀態

  線程對象只有調用start()方法才能進入可運行狀態;

  myThread.start();

  當處於可運行狀態時,系統就為這個線程分配了它需要的系統資源,安排其運行並調用線程運行方法。

3.不可運行狀態

  不可運行狀態也稱阻塞狀態,或者因為某種原因(輸入/輸出,等待消息,或者其他阻塞情況),系統不能執行線程狀態。線程進入該狀態的原因有如下幾條。

  (1)、調用了sleep方法  (2)、調用了suspend方法  

  (3)、為等候一個條件變量,線程調用wait方法

  (4)、輸入/輸出流中發生了阻塞狀態

4.死亡狀態

  就是線程釋放了實體。處於死亡狀態的線程不具有繼續運行的能力。一般可以通過兩種方法實現:

  (1)、自然撤銷,正常運行的線程完成它的全部工作,也就是線程執行完畢

  (2)、線程被停止,調用stop方法。一般不推薦通過這種方法來終止線程的執行。

 

我們以前寫的程序都是從上往下按照一定順序執行的,而引入線程之後,這個苛刻的規則被打破,程序會開辟多個分支運行,再加上處理器的高速處理數據的能力,我們肉眼看起來就像是同時運行一樣。

 

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