第十二章 Java多線程編程.ppt_第1頁
第十二章 Java多線程編程.ppt_第2頁
第十二章 Java多線程編程.ppt_第3頁
第十二章 Java多線程編程.ppt_第4頁
第十二章 Java多線程編程.ppt_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第12講線程技術JavaMulti Threads 計算機與通信學院 本章主要內容 一 線程及多線程的概念 程序 program 是對數(shù)據(jù)描述與操作的代碼的集合 是應用程序執(zhí)行的腳本 是靜態(tài)的 一 線程及多線程的概念 進程 process 是程序的一次完整的執(zhí)行過程 是操作系統(tǒng)運行程序的基本單位 系統(tǒng)從程序入口開始按語句的順序 其中包括順序 分支和循環(huán) 完成相應指令直至結尾 從出口退出 同時整個程序結束 是動態(tài)的 一個進程既包括其所要執(zhí)行的指令 也包括了執(zhí)行指令所需的任何系統(tǒng)資源 如CPU 內存空間 I O端口等 不同進程所占用的系統(tǒng)資源相對獨立 一 線程及多線程的概念 多任務是指在一個系統(tǒng)中可以同時運行多個程序 即有多個獨立運行的任務 多個進程 每一個任務對應一個進程 例如 邊聽音樂邊編寫Java程序 一 線程及多線程的概念 線程是比進程更小的運行單位 是程序中單個順序的流控制 每個線程也有它自身的產生 存在和消亡的過程 是一個動態(tài)的概念 在執(zhí)行的任何時刻 只有一個執(zhí)行點 一 線程及多線程的概念 多線程 Multi Threads 多線程是相對于單線程而言的 指的是在一個程序中可以定義多個線程并同時運行它們 每個線程可以執(zhí)行不同的任務 與多進程不同的是 同類多線程共享一塊內存空間和一組系統(tǒng)資源 所以 系統(tǒng)創(chuàng)建多線程花費單價較小 因此 也稱線程為輕負荷進程 例如 在線看電影 播放程序在播放的同時也在下載 一 線程及多線程的概念 線程與進程的區(qū)別線程并不是一個完整的程序 它自己本身并不能獨立運行 只能包含在程序中 只能在進程內部執(zhí)行 process process 一 線程及多線程的概念 線程與進程的區(qū)別多個進程的內部數(shù)據(jù)和狀態(tài)都是完全獨立的 線程本身的數(shù)據(jù)通常只有寄存器數(shù)據(jù) 以及一個程序執(zhí)行時使用的堆棧 所以線程的切換比進程切換的負擔要小 屬于同一進程的所有線程共享該進程的內存空間和一組系統(tǒng)資源 所以線程之間切換的速度比進程切換要快得多 二 Java中的線程技術 Java的線程是通過軟件包java lang中定義的類Thread來實現(xiàn)的 當生成一個Thread類的對象之后 就產生了一個線程 通過該對象 可以啟動線程 終止線程 或者暫時掛起線程等 二 Java中的線程技術 Thread在Java包中的層次關系 所有已實現(xiàn)的接口 RunnableThread類的原型 publicclassThreadextendsObjectimplementsRunnable 二 Java中的線程技術 Runnable接口 java lang RunnableRunnable的原型 publicinterfaceRunnable voidrun 二 Java中線程的創(chuàng)建 二 Java中線程的創(chuàng)建 二 Java中線程的創(chuàng)建 二 Java中線程的創(chuàng)建 二 Java中線程的創(chuàng)建 通過擴展Thread類創(chuàng)建線程 方法一1 創(chuàng)建Thread類的子類 2 重寫Thread類中的run 方法 3 創(chuàng)建子類的對象 4 調用線程對象的start 方法 例子 ThreadTest java 二 Java中線程的創(chuàng)建 通過擴展Thread類創(chuàng)建線程 方法一1 創(chuàng)建Thread類的子類 2 重寫Thread類中的run 方法 3 創(chuàng)建子類的對象 4 調用線程對象的start 方法 例子 ThreadTest java 二 Java中線程的創(chuàng)建 例子 ThreadTest java 二 Java中線程的創(chuàng)建 實現(xiàn)Runnable接口創(chuàng)建線程 方法二1 創(chuàng)建實現(xiàn)接口Runnable的類 2 實現(xiàn)接口Runnable中的run 方法 3 創(chuàng)建實現(xiàn)了Runnable接口的類對象 4 將3中創(chuàng)建的對象作為參數(shù) 創(chuàng)建Thread類對象 5 調用線程對象的start 方法 例子 AppletThreadTest java 二 Java中線程的創(chuàng)建 二 Java中線程的創(chuàng)建 例子 RunnableThreadTest java 二 線程的狀態(tài)和生命周期 線程的狀態(tài) 二 線程的狀態(tài)和生命周期 線程的生命周期1 新建2 就緒3 運行4 阻塞5 死亡 二 線程的狀態(tài)和生命周期 1 新建當一個Thread類或其子類的對象被聲明并創(chuàng)建時 新生的線程對象處于新建狀態(tài) 此時它已經有了相應的內存空間和其他資源 并已被初始化 2 就緒處于新建狀態(tài)的線程被啟動后 將進入線程隊列排隊等待CPU時間片 此時它已經具備了運行的條件 一旦輪到它來享用CPU資源時 就可以脫離創(chuàng)建它的主線程獨立開始自己的生命周期了 另外 原來處于阻塞狀態(tài)的線程被解除阻塞后也將進入就緒狀態(tài) 二 線程的狀態(tài)和生命周期 3 運行當就緒狀態(tài)的線程被調度并獲得處理器資源時 便進入運行狀態(tài) run 方法每一個Thread類及其子類的對象都有一個重要的run 方法 當線程對象被調度執(zhí)行時 它將自動調用本對象的run 方法 從第一句開始順序執(zhí)行 run 方法定義了這一類線程的操作和功能 二 線程的狀態(tài)和生命周期 4 阻塞一個正在執(zhí)行的線程如果在某些特殊情況下 如被人為掛起或需要執(zhí)行費時的輸入輸出操作時 將讓出CPU并暫時中止自己的執(zhí)行 進入阻塞狀態(tài) 阻塞時它不能進入排列隊列 只有當引起阻塞的原因被消除時 線程才可以轉入就緒狀態(tài) 重新進到線程隊列中排隊等待CPU資源 以便從原來終止處開始繼續(xù)執(zhí)行 二 線程的狀態(tài)和生命周期 5 死亡處于死亡狀態(tài)的線程不具有繼續(xù)運行的能力 線程死亡的原因有兩個 一個是正常運行的線程完成了它的全部工作 即執(zhí)行完了run 方法的最后一個語句并退出 另一個是線程被提前強制性地終止 如通過執(zhí)行stop 方法或destroy 終止線程 二 線程調度與優(yōu)先級 二 線程調度與優(yōu)先級 調度就是分配CPU資源 確定線程的執(zhí)行順序 Java采用搶占式調度方式 即高優(yōu)先級線程具有剝奪低優(yōu)先級線程執(zhí)行的權力 如果一個低優(yōu)先線程正在執(zhí)行 這時出現(xiàn)一個高優(yōu)先級線程 那么低優(yōu)先級線程就只能停止執(zhí)行 放棄CPU 推回到等待隊列中 等待下一輪執(zhí)行 而讓高優(yōu)先級線程立即執(zhí)行 如果線程具有相同的優(yōu)先級 則按 先來先服務 的原則調度 二 線程調度與優(yōu)先級 問題 如果高優(yōu)先級搶占了低優(yōu)先級的線程后 一直占據(jù)CPU 低優(yōu)先級的線程如何獲得控制權 有兩個方法可以改變這種現(xiàn)象 一是調用sleep 方法 暫時進入睡眠狀態(tài) 從而讓出CPU 使有相同優(yōu)先級線程和低優(yōu)先級線程有執(zhí)行的機會 二是調用yield 而放棄CPU 這時和它有相同優(yōu)先級的線程就有執(zhí)行的機會 三 多線程并發(fā)程序 二 線程組 ThreadGroup 二 守護線程 Deamon 三 多線程并發(fā)程序 線程同步 在多線程的程序中 當多個線程并發(fā)執(zhí)行時 由于線程的相對執(zhí)行順序是不確定的 當多個并發(fā)線程需要共享程序的代碼區(qū)域和數(shù)據(jù)區(qū)域時 由于各線程的執(zhí)行順序是不確定的 因此執(zhí)行的結果就帶有不確定性 這就要求線程同步例子 MultiThread java 三 多線程并發(fā)程序 線程同步 臨界區(qū)和線程同步在多線程程序設計中 我們將程序中那些不能被多個線程并發(fā)執(zhí)行的代碼段稱為臨界區(qū) 當某個線程已處于臨界區(qū)時 其他的線程就不允許再進入臨界區(qū) 實現(xiàn)方法 則是在共享代碼之前加入synchronized段 把共享代碼包含在synchronized段中 格式如下 synchronized objectname statement其中 objectname用于指出該臨界區(qū)的監(jiān)控對象 是可選項 statem

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論