第11章多執行緒.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章多執行緒

第11章 多執行緒 Java 2 程式設計入門與應用 目錄 11-1 Java的多執行緒 11-2 管理執行緒 溫故知新 自我突破習題 11-1 Java的多執行緒 11-1.1 何謂執行緒 11-1.2 利用Thread類別建立多執行緒 11-1.3 利用Runnable介面建立多執行緒 前言: 執行緒是指單一連續的程式行程,傳統的程式語言大多只有一個執行緒,但是在Java中允許應用程式同時執行兩個或兩個以上的執行緒,稱為多執行緒。 11-1.1 何謂執行緒 在介紹執行緒之前,必須先了解什麼是行程(Process)。 所謂行程是指作業系統執行每個應用程式的流程,作業系統會分配足夠的記憶體空間與CPU時間給每個行程。而因為每個應用程式不一定會佔用CPU的所有時間,為了充分使用CPU時間,避免有CPU閒置的情況,所以衍生出多執行緒的概念。 單一執行緒: 所謂單一執行緒(Thread)是指應用程式在一個行程中只能處理一項工作,也就是說同一個時間點只能執行一道指令,必須等前一項工作執行後,才能依序執行下一個工作,如下圖所示: 多執行緒與多工: 所謂多執行緒是指應用程式在一個行程中可以同時處理多項工作,而每一個行程都是各自獨立的,不會互相干擾。 利用多執行緒可以讓應用程式的行程共享CPU記憶體空間與時間,善加利用CPU的閒置時間,有效率的執行程式,而多執行緒其實就是模擬多工功能而發展出來的概念。 多工與多執行緒相異處: 多工是在Windows作業系統中常見的特性,舉例來說,作業系統可以同時執行瀏覽器、Word、小畫家等多個應用程式。 多工與多執行緒不同之處在於,多工是指同一個時間執行多個應用程式;而多執行緒是指同一個時間執行同一個應用程式中的多個行程,例如:Word文件可以同時做編輯、翻譯與列印等行程,在傳統的單一執行緒環境裡,必須等待前一個行程執行完畢才可以繼續執行下一個行程,但是在多執行緒環境中,卻可以同時執行這些程式。 多執行緒的運作方式如下圖所示: 11-1.2 利用Thread類別建立多執行緒 在Java中必須利用Thread類別的物件來建立執行緒,可以採用下面兩種方式建立多執行緒: 繼承Thread類別:直接產生執行緒。 實作Runnable介面:間接產生執行緒。 利用Thread類別建立多執行緒: 若要利用Thread類別建立多執行緒,必須先建立一個繼承Thread的衍生類別,然後在類別中覆載Thread類別的run成員函式,其語法如下: Thread類別的建構式與成員函式-1: 建立多執行緒類別前,必須先了解Thread類別中有哪些成員可以使用,說明如下: Thread類別的建構式與成員函式-2: Thread類別的建構式與成員函式-3: Thread類別的建構式與成員函式-4: 下面使用基礎類別Object中的函式,說明如下: 除了上面的成員以外,執行緒時還可能會使用到基礎類別Object中的函式,說明如下: 例如下面的程式碼利用Thread類別建立多個執行緒: 上述利用Thread類別建立多個執行緒的程式碼分析如下-1: 第22~42行建立一個列印執行緒,必須要繼承Thread類別。 第26~28行宣告建構式,設定列印的份數與樣式。 第30~41行覆載Thread基礎類別中的run成員函式,第31行顯示目前執行緒的名稱。 第36行利用sleep函式將執行緒暫停2秒(2000毫秒=2秒),必須拋出一個InterruptedException例外,使暫停中的執行緒可以隨時偵測中斷例外狀況。 第4行顯式預設執行緒的名稱為main,表示執行Java程式時,不需要利用start函式,就會自動啟動main執行緒了。 上述利用Thread類別建立多個執行緒的程式碼分析如下-2: 第6行判斷如果預設的執行緒還存活,就執行第7與8行,中斷該執行緒,並且顯示訊息。 在Java中也可以直接建立Thread類別的物件,例如第11行建立Thread物件,並同時指定執行緒的名稱,而因為沒有以start函式啟動此執行緒,所以第12行的isAlive函式值為false,表示執行緒沒有在執行。 第14與15行分別建立兩個PrintThread物件,並在第16與17行以start函式啟動執行緒。 第18行利用activeCount函式傳回目前有幾個執行緒正在執行,傳回值為3,分別為預設的main執行緒、p1與p2執行緒。 完成後,執行程式的畫面顯示如下: 11-1.3 利用Runnable介面建立多執行緒 除了利用Thread類別,也可以利用Runnable介面間接建立多執行緒,其實Java內建的Thread類別本來就繼承Object類別,並且實作Runnable介面,其程式碼如下: 透過實作Runnable介面來建立多執行緒的語法如下:

文档评论(0)

75986597 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档