世間萬物都可以同時完成很多工作。例如,人體可以同時進行呼吸、血液迴圈、思考問題等活動。使用者既可以使用計算機聽歌,也可以編寫文件和傳送郵件,而這些活動的完成可以同時進行。這種同時執行多個操作的“思想”在 Java 中被稱為並行,而將併行完成的每一件事稱為
執行緒。
在 Java 中,並行機制非常重要,但並不是所有程式語言都支援執行緒。在以往的程式中,多以一個任務完成以後再進行下一個任務的模式進行,這樣下一個任務的開始必須等待前一個任務的結束。Java 語言提供了併行機制,允許開發人員在程式中執行多個執行緒,每個執行緒完成一個功能,並與其他執行緒並行執行。這種機制被稱為
多執行緒。
多執行緒是非常複雜的機制,比如同時閱讀 3 本書。首先閱讀第 1 本第 1 章,然後再閱讀第 2 本第 1 章,再閱讀第 3 本第 1 章,接著回過頭閱讀第 1 本第 2 章,以此類推,就體現了多執行緒的複雜性。
既然多執行緒這麼複雜,那麼它在作業系統中是怎樣工作的呢?其實,Java 中的多執行緒在每個作業系統中的執行方式也存在差異,在此以 Windows 作業系統為例介紹其執行模式。
Windows 系統是多工作業系統,它以進程為單位。一個進程是一個包含有自身地址的程式,每個獨立執行的程式都稱為進程,也就是正在執行的程式。圖 1 所示為 Windows 7 系統下使用工作管理員檢視進程的結果。
圖1 檢視 Windows 7 的進程(點此檢視原圖)