版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java程序設(shè)計(jì)實(shí)用教程(第4版)第第7章章 多線程多線程 7.1 操作系統(tǒng)中的進(jìn)程與線程操作系統(tǒng)中的進(jìn)程與線程 7.2 Java的線程對(duì)象的線程對(duì)象 7.3 線程的同步機(jī)制線程的同步機(jī)制Java程序設(shè)計(jì)實(shí)用教程(第4版)第第7章章 多線程多線程內(nèi)容和要求:內(nèi)容和要求:1. 理解進(jìn)程與線程概念,掌握創(chuàng)建、管理和控理解進(jìn)程與線程概念,掌握創(chuàng)建、管理和控制制Java線程對(duì)象的方法。線程對(duì)象的方法。2. 了解并發(fā)執(zhí)行的多線程間存在的各種關(guān)系,了解并發(fā)執(zhí)行的多線程間存在的各種關(guān)系,掌握實(shí)現(xiàn)線程互斥和線程同步方法。掌握實(shí)現(xiàn)線程互斥和線程同步方法。重點(diǎn):重點(diǎn):創(chuàng)建創(chuàng)建Java線程對(duì)象,改變線程狀態(tài),設(shè)線程
2、對(duì)象,改變線程狀態(tài),設(shè)置線程優(yōu)先級(jí)以控制線程調(diào)度。置線程優(yōu)先級(jí)以控制線程調(diào)度。難點(diǎn):難點(diǎn):線程互斥,線程同步。線程互斥,線程同步。Java程序設(shè)計(jì)實(shí)用教程(第4版)7.1 操作系統(tǒng)中的進(jìn)程與線程操作系統(tǒng)中的進(jìn)程與線程n7.1.1 進(jìn)程進(jìn)程n7.1.2 線程線程n7.1.3 并發(fā)程序設(shè)計(jì)并發(fā)程序設(shè)計(jì)Java程序設(shè)計(jì)實(shí)用教程(第4版)7.1.1 進(jìn)程進(jìn)程1.進(jìn)程的定義和屬性進(jìn)程的定義和屬性進(jìn)程(進(jìn)程(process)是一個(gè)可并發(fā)執(zhí)行的具有獨(dú)立功能的程序)是一個(gè)可并發(fā)執(zhí)行的具有獨(dú)立功能的程序(program)關(guān)于某個(gè)數(shù)據(jù)集合的一次執(zhí)行過(guò)程,也是操作系)關(guān)于某個(gè)數(shù)據(jù)集合的一次執(zhí)行過(guò)程,也是操作系統(tǒng)進(jìn)行
3、資源分配和保護(hù)的基本單位。統(tǒng)進(jìn)行資源分配和保護(hù)的基本單位。 結(jié)構(gòu)性結(jié)構(gòu)性共享性共享性動(dòng)態(tài)性動(dòng)態(tài)性獨(dú)立性獨(dú)立性并發(fā)性并發(fā)性制約性制約性 1.進(jìn)程的狀態(tài)進(jìn)程的狀態(tài)就緒(就緒(ready)態(tài))態(tài)運(yùn)行(運(yùn)行(running)態(tài))態(tài)阻塞(阻塞(blocked)態(tài))態(tài) Java程序設(shè)計(jì)實(shí)用教程(第4版)7.1.2 線程線程1.引入線程機(jī)制的動(dòng)機(jī)和思路引入線程機(jī)制的動(dòng)機(jī)和思路2.線程的定義和屬性線程的定義和屬性線程(線程(thread)是操作系統(tǒng)進(jìn)程中能夠獨(dú)立)是操作系統(tǒng)進(jìn)程中能夠獨(dú)立執(zhí)行的實(shí)體(控制流),是處理器調(diào)度和執(zhí)行的實(shí)體(控制流),是處理器調(diào)度和分派的基本單位。分派的基本單位。 并發(fā)性并發(fā)性共享性
4、共享性動(dòng)態(tài)性動(dòng)態(tài)性結(jié)構(gòu)性結(jié)構(gòu)性Java程序設(shè)計(jì)實(shí)用教程(第4版) 3. 線程的狀態(tài)線程的狀態(tài) 4.線程的并發(fā)性線程的并發(fā)性5.線程調(diào)度線程調(diào)度Java程序設(shè)計(jì)實(shí)用教程(第4版)7.1.3 并發(fā)程序設(shè)計(jì)并發(fā)程序設(shè)計(jì)1.順序程序設(shè)計(jì)順序程序設(shè)計(jì)執(zhí)行的順序性。執(zhí)行的順序性。環(huán)境的封閉性。環(huán)境的封閉性。執(zhí)行結(jié)果的確定性。執(zhí)行結(jié)果的確定性。計(jì)算結(jié)果的可再現(xiàn)性。計(jì)算結(jié)果的可再現(xiàn)性。2.并發(fā)程序設(shè)計(jì)并發(fā)程序設(shè)計(jì)Java程序設(shè)計(jì)實(shí)用教程(第4版)7.2 Java的線程對(duì)象的線程對(duì)象n7.2.1 Runnable接口與接口與Thread類類n7.2.2 線程對(duì)象的優(yōu)先級(jí)線程對(duì)象的優(yōu)先級(jí)n7.2.3 線程對(duì)象的生
5、命周期線程對(duì)象的生命周期n7.2.4 定時(shí)器與圖形動(dòng)畫(huà)設(shè)計(jì)定時(shí)器與圖形動(dòng)畫(huà)設(shè)計(jì)Java程序設(shè)計(jì)實(shí)用教程(第4版)7.2.1 Runnable接口與接口與Thread類類1.Runnable接口接口public interface Runnable public abstract void run();Java程序設(shè)計(jì)實(shí)用教程(第4版)2. Thread線程類線程類public class Thread extends Object implements Runnable public Thread() /構(gòu)造方法構(gòu)造方法 public Thread(String name) /name指定線程
6、名指定線程名 public Thread(Runnable target) /target指定線程的目標(biāo)對(duì)象指定線程的目標(biāo)對(duì)象 public Thread(Runnable target, String name) public void run() /描述線程操作的線程體描述線程操作的線程體 public final String getName() /返回線程名返回線程名 public final void setName(String name) /設(shè)置線程名設(shè)置線程名 public static int activeCount() /返回當(dāng)前活動(dòng)線程個(gè)數(shù)返回當(dāng)前活動(dòng)線程個(gè)數(shù) publi
7、c static Thread currentThread() /返回當(dāng)前執(zhí)行線程對(duì)象返回當(dāng)前執(zhí)行線程對(duì)象 public Sting toString() /返回線程的字符串信息返回線程的字符串信息 public void start() /啟動(dòng)已創(chuàng)建的線程對(duì)象啟動(dòng)已創(chuàng)建的線程對(duì)象Java程序設(shè)計(jì)實(shí)用教程(第4版)【例例7.1】 聲明繼承聲明繼承Thread類類的奇數(shù)的奇數(shù)/偶數(shù)序列線程。偶數(shù)序列線程。1.main是首先啟動(dòng)執(zhí)行的線程是首先啟動(dòng)執(zhí)行的線程2.兩個(gè)線程交替運(yùn)行兩個(gè)線程交替運(yùn)行Java程序設(shè)計(jì)實(shí)用教程(第4版)【例例7.2】 聲明實(shí)現(xiàn)聲明實(shí)現(xiàn)Runnable接接口的奇數(shù)口的奇數(shù)/偶
8、數(shù)序列線程。偶數(shù)序列線程。Thread類的類的run()方法聲明如下:方法聲明如下:public void run() /描述線程操作的線程體描述線程操作的線程體 if (target != null) target.run(); /執(zhí)行目標(biāo)對(duì)象的執(zhí)行目標(biāo)對(duì)象的run()方法方法Thread t1 = new Thread(); /t1的的run()方法為空方法為空Thread thread_odd = new Thread(target ,奇數(shù)線程奇數(shù)線程); /thread_odd實(shí)際執(zhí)行實(shí)際執(zhí)行target的的run()方法方法Java程序設(shè)計(jì)實(shí)用教程(第4版)3. 兩種創(chuàng)建線程方式的比
9、較兩種創(chuàng)建線程方式的比較(1) 繼承線程繼承線程Thread類類public class NumberThread extends Thread(2) 實(shí)現(xiàn)實(shí)現(xiàn)Runnable接口接口public class NumberRunnable implements RunnableJava程序設(shè)計(jì)實(shí)用教程(第4版)7.2.2 線程對(duì)象的優(yōu)先級(jí)線程對(duì)象的優(yōu)先級(jí)1.Thread類中聲明了類中聲明了3個(gè)表示優(yōu)先級(jí)的公有靜態(tài)常量:個(gè)表示優(yōu)先級(jí)的公有靜態(tài)常量:public static final int MIN_PRIORITY=1 /最低優(yōu)先級(jí)最低優(yōu)先級(jí)public static final int M
10、AX_PRIORITY=10 /最高優(yōu)先級(jí)最高優(yōu)先級(jí)public static final int NORM_PRIORITY=5 /默認(rèn)優(yōu)先級(jí)默認(rèn)優(yōu)先級(jí)2.Thread類中與線程優(yōu)先級(jí)有關(guān)的方法有以下類中與線程優(yōu)先級(jí)有關(guān)的方法有以下2個(gè):個(gè):public final int getPriority() /獲得線程優(yōu)先級(jí)獲得線程優(yōu)先級(jí)public final void setPriority(int newPriority)/設(shè)置線程優(yōu)先級(jí)設(shè)置線程優(yōu)先級(jí)Java程序設(shè)計(jì)實(shí)用教程(第4版)7.2.3 線程對(duì)象的生命周期線程對(duì)象的生命周期1.Thread.State類聲明的線程狀態(tài)類聲明的線程狀態(tài)
11、新建態(tài)、運(yùn)行態(tài)、阻塞態(tài)和等待態(tài)、終止態(tài)新建態(tài)、運(yùn)行態(tài)、阻塞態(tài)和等待態(tài)、終止態(tài) Java程序設(shè)計(jì)實(shí)用教程(第4版)2. Thread類中改變和判斷線程狀態(tài)的方法類中改變和判斷線程狀態(tài)的方法1.線程啟動(dòng)線程啟動(dòng)public void start() /啟動(dòng)線程對(duì)象啟動(dòng)線程對(duì)象public final boolean isAlive() /是否活動(dòng)狀態(tài)是否活動(dòng)狀態(tài) 2.線程睡眠線程睡眠public static void sleep(long millis) throws InterruptedException3.線程中斷線程中斷public void interrupt() /設(shè)置中斷標(biāo)記設(shè)置中
12、斷標(biāo)記public boolean isInterrupted() /判斷是否中斷判斷是否中斷Java程序設(shè)計(jì)實(shí)用教程(第4版)【例例7.3】 設(shè)計(jì)滾動(dòng)字演示線程狀態(tài)及改設(shè)計(jì)滾動(dòng)字演示線程狀態(tài)及改變方法。變方法。本例演示線程對(duì)象的生命周期從創(chuàng)建到終止的過(guò)本例演示線程對(duì)象的生命周期從創(chuàng)建到終止的過(guò)程,期間使用程,期間使用new、start()、sleep()、interrupt()等方法改變線程的狀態(tài)。本例綜合運(yùn)用內(nèi)部類、圖形等方法改變線程的狀態(tài)。本例綜合運(yùn)用內(nèi)部類、圖形用戶界面、線程等多方面技術(shù)實(shí)現(xiàn)設(shè)計(jì)思想。用戶界面、線程等多方面技術(shù)實(shí)現(xiàn)設(shè)計(jì)思想。 1.聲明自定義面板類為私有內(nèi)部類并實(shí)現(xiàn)多個(gè)接
13、口聲明自定義面板類為私有內(nèi)部類并實(shí)現(xiàn)多個(gè)接口對(duì)象嵌套對(duì)象嵌套2.線程狀態(tài)變化線程狀態(tài)變化Java程序設(shè)計(jì)實(shí)用教程(第4版)7.2.4 定時(shí)器與圖形動(dòng)畫(huà)設(shè)計(jì)定時(shí)器與圖形動(dòng)畫(huà)設(shè)計(jì)public class Timer implements Serializable public Timer(int delay, ActionListener l) public void addActionListener(ActionListener l) /注冊(cè)定時(shí)事件監(jiān)聽(tīng)器注冊(cè)定時(shí)事件監(jiān)聽(tīng)器 public void setDelay(int delay) /設(shè)置延時(shí)的時(shí)間間隔設(shè)置延時(shí)的時(shí)間間隔 public v
14、oid start() /啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器 public void stop() /停止定時(shí)器停止定時(shí)器 public void restart() /重新啟動(dòng)定時(shí)器重新啟動(dòng)定時(shí)器【例例7.4】 彈彈球,使用定時(shí)器實(shí)現(xiàn)圖形動(dòng)畫(huà)。彈彈球,使用定時(shí)器實(shí)現(xiàn)圖形動(dòng)畫(huà)。Java程序設(shè)計(jì)實(shí)用教程(第4版)7.3 線程的同步機(jī)制線程的同步機(jī)制n7.3.1 交互線程交互線程n7.3.2 線程間的競(jìng)爭(zhēng)關(guān)系與線程互斥線程間的競(jìng)爭(zhēng)關(guān)系與線程互斥n7.3.3 線程間的協(xié)作關(guān)系與線程同步線程間的協(xié)作關(guān)系與線程同步Java程序設(shè)計(jì)實(shí)用教程(第4版)7.3.1 交互線程交互線程1.無(wú)關(guān)線程與交互線程無(wú)關(guān)線程與交互線程無(wú)
15、關(guān)的并發(fā)線程是指它們分別在不同的變量集合上無(wú)關(guān)的并發(fā)線程是指它們分別在不同的變量集合上操作。操作。 交互交互的并發(fā)線程是指它們共享某些變量。的并發(fā)線程是指它們共享某些變量。 2.并發(fā)執(zhí)行的交互線程間存在與時(shí)間有關(guān)的錯(cuò)并發(fā)執(zhí)行的交互線程間存在與時(shí)間有關(guān)的錯(cuò)誤誤Java程序設(shè)計(jì)實(shí)用教程(第4版)【例例7.5】 銀行賬戶的存銀行賬戶的存/取款線取款線程設(shè)計(jì)。程設(shè)計(jì)。圖圖7.7 并發(fā)線程共享臨界資源并發(fā)線程共享臨界資源 n運(yùn)行結(jié)果不惟一,取決于線程調(diào)度運(yùn)行結(jié)果不惟一,取決于線程調(diào)度n線程執(zhí)行被打斷時(shí)出現(xiàn)錯(cuò)誤線程執(zhí)行被打斷時(shí)出現(xiàn)錯(cuò)誤Java程序設(shè)計(jì)實(shí)用教程(第4版)7.3.2 線程間的競(jìng)爭(zhēng)關(guān)系與線程互斥
16、線程間的競(jìng)爭(zhēng)關(guān)系與線程互斥1.線程間的競(jìng)爭(zhēng)關(guān)系線程間的競(jìng)爭(zhēng)關(guān)系被阻塞線程永遠(yuǎn)得不到訪問(wèn)權(quán),出現(xiàn)兩個(gè)問(wèn)題:被阻塞線程永遠(yuǎn)得不到訪問(wèn)權(quán),出現(xiàn)兩個(gè)問(wèn)題:死鎖、饑餓。死鎖、饑餓。 Java程序設(shè)計(jì)實(shí)用教程(第4版)2. 線程互斥和臨界區(qū)管理線程互斥和臨界區(qū)管理操作系統(tǒng)對(duì)共享一個(gè)變量的若干線程進(jìn)入各自操作系統(tǒng)對(duì)共享一個(gè)變量的若干線程進(jìn)入各自臨界區(qū)有以下臨界區(qū)有以下3個(gè)調(diào)度原則:個(gè)調(diào)度原則:一次至多一個(gè)線程能夠在它的臨界區(qū)內(nèi)。一次至多一個(gè)線程能夠在它的臨界區(qū)內(nèi)。不能讓一個(gè)線程無(wú)限地留在它的臨界區(qū)內(nèi)。不能讓一個(gè)線程無(wú)限地留在它的臨界區(qū)內(nèi)。不能強(qiáng)迫一個(gè)線程無(wú)限地等待進(jìn)入它的臨界區(qū)。不能強(qiáng)迫一個(gè)線程無(wú)限地等待進(jìn)
17、入它的臨界區(qū)。特別地,進(jìn)入臨界區(qū)的任一線程不能妨礙正等特別地,進(jìn)入臨界區(qū)的任一線程不能妨礙正等待進(jìn)入的其他線程的進(jìn)展。待進(jìn)入的其他線程的進(jìn)展。Java程序設(shè)計(jì)實(shí)用教程(第4版)3. Java的線程互斥實(shí)現(xiàn)的線程互斥實(shí)現(xiàn)1.同步語(yǔ)句同步語(yǔ)句synchronized (對(duì)象對(duì)象) 語(yǔ)句語(yǔ)句2.同步方法同步方法synchronized 方法聲明方法聲明Java程序設(shè)計(jì)實(shí)用教程(第4版)【例例7.6】 互斥的存互斥的存/取款線程設(shè)計(jì)。取款線程設(shè)計(jì)。圖圖7.9 帶互斥鎖的并發(fā)線程執(zhí)行流程帶互斥鎖的并發(fā)線程執(zhí)行流程 Java程序設(shè)計(jì)實(shí)用教程(第4版)7.3.3 線程間的協(xié)作關(guān)系與線程同步線程間的協(xié)作關(guān)系與
18、線程同步1.線程間的協(xié)作關(guān)系線程間的協(xié)作關(guān)系【例例7.7】 發(fā)送線程與接收線程。發(fā)送線程與接收線程。Java程序設(shè)計(jì)實(shí)用教程(第4版)2. 線程同步線程同步4.Java的線程通信方法的線程通信方法public final void wait() throws InterruptedException /等待等待public final native void notify(); /喚醒一個(gè)等待線程喚醒一個(gè)等待線程public final native void notifyAll(); /喚醒所有等待線程喚醒所有等待線程1.線程同步機(jī)制線程同步機(jī)制背景背景設(shè)置信號(hào)量設(shè)置信號(hào)量線程根據(jù)信號(hào)量狀態(tài)而執(zhí)行線程根據(jù)信號(hào)量狀態(tài)而執(zhí)行Java程序設(shè)計(jì)實(shí)用教程(第4版)【例例7.8】 采用信號(hào)量和同步方法使發(fā)送采用信號(hào)量和同步方法使發(fā)送線程與接收線程同步運(yùn)行。線程與接收線程同步運(yùn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 解析教育政策之路
- 復(fù)古廣告圖版權(quán)使用合同(2篇)
- 備用電力供應(yīng)合同(2篇)
- 3課時(shí)求一個(gè)數(shù)的幾倍是多少(說(shuō)課稿)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 個(gè)人房產(chǎn)交易標(biāo)準(zhǔn)協(xié)議模板 2024版版A版
- 社團(tuán)貸款借款合同
- 2024年藥品進(jìn)出口質(zhì)量監(jiān)管合同3篇
- 2024版家居油漆涂裝工程分包協(xié)議模板一
- 2024房地產(chǎn)行業(yè)保密協(xié)議范本
- 2024年股權(quán)轉(zhuǎn)讓合同:某科技公司股權(quán)轉(zhuǎn)讓及相關(guān)權(quán)益
- 2024氫氣長(zhǎng)管拖車(chē)安全使用技術(shù)規(guī)范
- 部編版語(yǔ)文中考必背文言文7-9年級(jí)
- 《中外歷史綱要(上)》期末專題復(fù)習(xí)提綱
- TCALC 003-2023 手術(shù)室患者人文關(guān)懷管理規(guī)范
- 初中學(xué)生交通安全教育教案
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 4-04-04-02 網(wǎng)絡(luò)與信息安全管理員(數(shù)據(jù)安全管理員)S 2024年版
- 腦卒中后吞咽障礙患者進(jìn)食護(hù)理-2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)
- 常見(jiàn)的口腔疾病護(hù)理
- 阿里巴巴集團(tuán)swot分析通用課件
- 水電風(fēng)電項(xiàng)目審批核準(zhǔn)流程課件
- 2024年國(guó)華人壽保險(xiǎn)股份有限公司招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論