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

執行緒 Threads 讓你的程式具有多工(Multitasking) 及多重處理(Multiprocessing)的能力 什麼是執行緒 支援多重處理的執行控制機制,它可以執行程式中任何一組相關且可與程式中其它部分多重並行處理的程式片斷。 執行緒具有以下幾個基本特徵: 不是完整的程式。 隸屬於同一個程式的執行緒必需共享系統分配給所屬主程式的資源(如記憶體空間、CPU時間等)。 每一個執行緒都有自己的執行堆疊及程式計數器 程式可以設定執行緒的執行優先順序及所隸屬的執行緒群組。 每個執行緒於程式執行時的可能狀態有:born、ready、running、blocked、suspend、sleeping、waiting及dead。 如何建立執行緒 在Java程式中,執行緒是以執行緒物件來表示,亦即在程式中 一個執行緒物件就代表了一個可以執行程式片斷的執行緒 建立執行緒物件以便指定程式中部分的程式碼給執行緒執行的方式有二種: 在程式中建立Thread類別的子類別,然後直接在子類別中改寫繼承自Thread類別的run()方法 在程式中定義界面Runnable,然後改寫Runnable的run()方法 Note: run()方法為執行緒的執行進入點(Entry Point) 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函

文档评论(0)

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

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

1亿VIP精品文档

相关文档