Java线程的概念
和其他多數計算機語言不同,Java內置支持多線程編程(multithreaded programming)。
多線程程序包含兩條或兩條以上并發運行的部分。程序中每個這樣的部分都叫一個線程(thread),每個線程都有獨立的執行路徑。因此,多線程是多任務處理的一種特殊形式。
你一定知道多任務處理,因為它實際上被所有的現代操作系統所支持。然而,多任務處理有兩種截然不同的類型:基于進程的和基于線程的。認識兩者的不同是十分重要的。
對很多讀者,基于進程的多任務處理是更熟悉的形式。進程(process)本質上是一個執行的程序。因此,基于進程(process-based) 的多任務處理的特點是允許你的計算機同時運行兩個或更多的程序。舉例來說,基于進程的多任務處理使你在運用文本編輯器的時候可以同時運行Java編譯器。在基于進程的多任務處理中,程序是調度程序所分派的最小代碼單位。
在基于線程(thread-based) 的多任務處理環境中,線程是最小的執行單位。這意味著一個程序可以同時執行兩個或者多個任務的功能。例如,一個文本編輯器可以在打印的同時格式化文本。所以,多進程程序處理“大圖片”,而多線程程序處理細節問題。
多線程程序比多進程程序需要更少的管理費用。進程是重量級的任務,需要分配它們自己獨立的地址空間。進程間通信是昂貴和受限的。進程間的轉換也是很需要花費的。另一方面,線程是輕量級的選手。它們共享相同的地址空間并且共同分享同一個進程。線程間通信是便宜的,線程間的轉換也是低成本的。當Java程序使用多進程任務處理環境時,多進程程序不受Java的控制,而多線程則受Java控制。
多線程幫助你寫出CPU最大利用率的高效程序,因為空閑時間保持最低。這對Java運行的交互式的網絡互連環境是至關重要的,因為空閑時間是公共的。舉個例子來說,網絡的數據傳輸速率遠低于計算機處理能力,本地文件系統資源的讀寫速度遠低于CPU的處理能力,當然,用戶輸入也比計算機慢很多。在傳統的單線程環境中,你的程序必須等待每一個這樣的任務完成以后才能執行下一步——盡管CPU有很多空閑時間。多線程使你能夠獲得并充分利用這些空閑時間。
如果你在Windows 98 或Windows 2000這樣的操作系統下有編程經驗,那么你已經熟悉了多線程。然而,Java管理線程使多線程處理尤其方便,因為很多細節對你來說是易于處理的。
3.主線程
4.創建線程
5.創建多線程
6.isAlive()和join()的使用
7.線程優先級
8.線程同步
9.線程間通信
10.線程死鎖
11.線程的掛起、恢復和終止
總結