Java知多少(55)線程

來源:互聯網
上載者:User

標籤:

和其他多數電腦語言不同,Java內建支援多線程編程(multithreaded programming)。

多線程程式包含兩條或兩條以上並發啟動並執行部分。程式中每個這樣的部分都叫一個線程(thread),每個線程都有獨立的執行路徑。因此,多線程是多任務處理的一種特殊形式。

你一定知道多任務處理,因為它實際上被所有的現代作業系統所支援。然而,多任務處理有兩種截然不同的類型:基於進程的和基於線程的。認識兩者的不同是十分重要的。

對很多讀者,基於進程的多任務處理是更熟悉的形式。進程(process)本質上是一個執行的程式。因此,基於進程(process-based) 的多任務處理的特點是允許你的電腦同時運行兩個或更多的程式。舉例來說,基於進程的多任務處理使你在運用文字編輯器的時候可以同時運行Java編譯器。在基於進程的多任務處理中,程式是發送器所指派的最小代碼單位。

在基於線程(thread-based) 的多任務處理環境中,線程是最小的執行單位。這意味著一個程式可以同時執行兩個或者多個任務的功能。例如,一個文字編輯器可以在列印的同時格式化文本。所以,多進程程式處理“大圖片”,而多線程程式處理細節問題。

多線程程式比多進程程式需要更少的管理費用。進程是重量級的任務,需要分配它們自己獨立的地址空間。處理序間通訊是昂貴和受限的。進程間的轉換也是很需要花費的。另一方面,線程是輕量級的選手。它們共用相同的地址空間並且共同分享同一個進程。線程間通訊是便宜的,線程間的轉換也是低成本的。當Java程式使用多進程任務處理環境時,多進程程式不受Java的控制,而多線程則受Java控制。

多線程協助你寫出CPU最大利用率的高效程式,因為空白閑時間保持最低。這對Java啟動並執行互動網路互連環境是至關重要的,因為空白閑時間是公用的。舉個例子來說,網路的資料轉送速率遠低於電腦處理能力,本地檔案系統資源的讀寫速度遠低於CPU的處理能力,當然,使用者輸入也比電腦慢很多。在傳統的單線程環境中,你的程式必須等待每一個這樣的任務完成以後才能執行下一步——儘管CPU有很多空閑時間。多線程使你能夠獲得並充分利用這些空閑時間。

如果你在Windows 98 或Windows 2000這樣的作業系統下有編程經驗,那麼你已經熟悉了多線程。然而,Java管理線程使多執行緒尤其方便,因為很多細節對你來說是易於處理的。  系列文章:

Java知多少(上)

Java知多少(39)interface介面

Java知多少(40)介面和抽象類別的區別

Java知多少(41)泛型詳解

Java知多少(42)泛型萬用字元和型別參數的範圍

Java知多少(43)異常處理基礎

Java知多少(44)異常類型

Java知多少(45)未被捕獲的異常

Java知多少(46)try和catch的使用

Java知多少(47)多重catch語句的使用

Java知多少(48)try語句的嵌套

Java知多少(49)throw:異常的拋出

Java知多少(50)Java throws子句

Java知多少(51)finally

Java知多少(52)內建異常

Java知多少(53)使用Java建立自己的異常子類

Java知多少(54)斷言詳解

Java知多少(55)線程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.