![操作系統(tǒng)-理發(fā)師問題的java模擬_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/10/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab1.gif)
![操作系統(tǒng)-理發(fā)師問題的java模擬_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/10/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab2.gif)
![操作系統(tǒng)-理發(fā)師問題的java模擬_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/10/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab3.gif)
![操作系統(tǒng)-理發(fā)師問題的java模擬_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/10/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab/4b6aca6e-9c13-4d3b-aa1a-5eabf3b3c2ab4.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、理發(fā)師問題的java語言模擬對(duì)于操作系統(tǒng)經(jīng)典的理發(fā)師問題,給出一種基于java代碼的解決方案。一、問題分析:我們首先需要考慮以下的情況:1.沒有顧客時(shí):理發(fā)師休息2.顧客到來但理發(fā)師在睡覺時(shí):?jiǎn)拘牙戆l(fā)師3.顧客到來理發(fā)師在理發(fā):有空椅子,坐上去等待;沒有空椅子,離開,過一會(huì)兒再回來二、代碼情況說明:設(shè)計(jì)類 Cust 實(shí)現(xiàn)接口Runnable,用來表示編號(hào)為index的顧客的執(zhí)行情況。類Barbershop中包含主函數(shù),使用方法isEmpty();isBusy();isFull();分別用來檢驗(yàn)是否有顧客,理發(fā)師的狀態(tài),是否有空椅子;使用全局變量sleep來表示理發(fā)師是否在睡覺。主函數(shù)中使用fo
2、r循環(huán)new Thread(new Cust(b, i).start();開始一個(gè)進(jìn)程的執(zhí)行申請(qǐng),在haircut()方法之中進(jìn)行以上三種情況的判斷與處理。測(cè)試時(shí)只需運(yùn)行BarberShop根據(jù)提示輸入對(duì)應(yīng)的顧客和椅子數(shù)量即可三、具體代碼:import java.util.Scanner;import java.util.concurrent.Semaphore;public class Barbershop int customer = 0; /顧客的數(shù)量static int chair = 2; /椅子的數(shù)量int busy = 0; /理發(fā)師是否繁忙boolean sleep = tru
3、e;Semaphore mutex = new Semaphore(1); /信號(hào)量的初始值為1public static void main (String args) throws InterruptedException Barbershop b =new Barbershop();System.out.println(睡覺的理發(fā)師問題:rn一個(gè)理發(fā)店包含了一個(gè)有n把椅子的等待室,店里有一把椅子供顧客理發(fā)。rn沒有顧客的時(shí)候理發(fā)師就會(huì)睡覺。rn如果顧客到來時(shí)發(fā)現(xiàn)椅子+ 滿了,就會(huì)離開。rn如果理發(fā)師正在忙但是還有空椅子,顧客就會(huì)坐在椅子上等候。rn如果顧客到來時(shí)理發(fā)師正在睡覺,那么顧客就
4、會(huì)喚醒理發(fā)師。);System.out.println(讓我們來模擬一下:rn會(huì)有多少個(gè)顧客到來呢?);int cust = Integer.valueOf(new Scanner(System.in).nextLine();System.out.println(理發(fā)店里一共有多少把椅子呢?(包括正在理發(fā)的那個(gè)顧客的椅子);chair = Integer.valueOf(new Scanner(System.in).nextLine();System.out.println(好的,+cust+名顧客和+chair+把椅子。現(xiàn)在,我們開始吧。rn-);for (int i = 1; i =cha
5、ir) return true;return false;public synchronized boolean isEmpty() /檢驗(yàn)是否有顧客if (customer= 1) return true;return false;public void haircut(int index) throws InterruptedException boolean haveHaircut = false;while(!haveHaircut) System.out.println(顧客 + index + :我來理發(fā)啦);customer+;/ 判斷是否滿if (isFull() System
6、.out.println(顧客 + index + :嚶嚶嚶,沒有椅子了,我一會(huì)兒再過來看看吧);customer-;Thread.sleep(int) (6000 - Math.random() *3000); /顧客在一定的時(shí)間之后會(huì)回來 else if (busy = 1) System.out.println(顧客 + index + :有空椅子!我先坐上去!);System.out.println(顧客 + index + :等啊等,怎么還不到我呀?);mutex.acquire();synchronized (this) while (busy = 1) wait();if(sle
7、ep) System.out.println(顧客 + index + :理發(fā)師,醒來啦 );sleep = false;System.out.println(顧客 + index + :好開心,開始理發(fā)了!);busy = 1;Thread.sleep(1000); /理發(fā)需要一定的時(shí)間System.out.println(顧客 + index + :我的新發(fā)型好漂亮!我走啦!);haveHaircut = true;customer-;mutex.release();synchronized (this) busy = 0;notify();if (customer = 0&(!sleep) sleep = true;System.out.println(理發(fā)師:誒呀現(xiàn)在沒有人來理發(fā),可把我給累壞了,讓我打個(gè)盹兒);package operationSystem;public class Cust implements Runnable Barbershop dohair;int index;public Cust(Barbershop dohair, int index) this.dohair = d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年膜片式液壓排泥閥項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)紙顯液行業(yè)投資前景及策略咨詢研究報(bào)告
- 惠州廣東惠州市120急救指揮中心招聘聘用人員筆試歷年參考題庫(kù)附帶答案詳解
- 2025年曬圖紙項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)多功能專用防水粘合劑行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年復(fù)合輪套項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)低壓開關(guān)板行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)DCS系統(tǒng)專用顯示器行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年鳥用品項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年鋁手電筒項(xiàng)目投資價(jià)值分析報(bào)告
- 智能RPA財(cái)務(wù)機(jī)器人開發(fā)教程-基于來也UiBot 課件 第1章-機(jī)器人流程自動(dòng)化概述
- 2024-2025學(xué)年天津市河?xùn)|區(qū)高一上學(xué)期期末質(zhì)量檢測(cè)數(shù)學(xué)試卷(含答案)
- 信永中和筆試題庫(kù)及答案
- 甲流乙流培訓(xùn)課件
- 《視網(wǎng)膜靜脈阻塞》課件
- 2025《省建設(shè)工程檔案移交合同書(責(zé)任書)》
- 春季安全教育培訓(xùn)課件
- 《大學(xué)英語1》期末考試試卷及答案(???
- 《石油鉆井基本知識(shí)》課件
- 《ZN真空斷路器》課件
- 2024新滬教版英語(五四學(xué)制)七年級(jí)上單詞默寫單
評(píng)論
0/150
提交評(píng)論