怎樣讓吐司機器中三個任務相互協作

2021-06-22 04:57:32 字數 1341 閱讀 4936

有一台機器具有三個任務:乙個製作吐司,乙個給吐司抹黃油,另乙個在抹過黃油的吐司上塗果醬。

根據物件導向的封裝特徵:

把對同一事物進行操作的方法和相關的方法放在同乙個類中,把方法和它操作的資料放在

同乙個類中。

吐司機器有3個方法

製作吐司

給吐司抹黃油

在抹過黃油的吐司上塗果醬

為了實現3個任務相互協作,使用wait和notifyall技術

怎麼切換3個任務呢?我們知道多生產多消費主要切換的是生產和消費方法,它們使用2種狀態來標記,true和false;而現在我們需要3中狀態,

一種是製作吐司,一種是給吐司抹黃油,一種是在抹過黃油的吐司上塗果醬

怎麼切換呢?

第乙個步驟是製作吐司,那麼必須是先執行製作吐司。設定製作吐司標誌的預設值為false,其餘的2中狀態標誌為true(使vm第乙個切換到它們的時候處於等待狀態)。

由於第二個步驟是給吐司抹黃油,所以在第乙個步驟的時候,必須設定第二個步驟的標誌為false,這樣能使第二個步驟進行操作;至於給吐司抹黃油方法,跟製作吐司

的思想一致。

核心**:

object obj=new object();

//定義三種標誌

boolean maketoaflag;//製作吐司

boolean toatobuttflag=true;//給吐司抹黃油

boolean butttoajamflag=true;//在抹過黃油的吐司上塗果醬

//製作吐司

public void maketoa() catch (interruptedexception e)

}system.out.println("製作吐司");

toatobuttflag=false;

maketoaflag=true;

obj.notifyall();}}

//給吐司抹黃油

public void toatobutter() catch (interruptedexception e)

}system.out.println("給吐司抹黃油");

butttoajamflag=false;

toatobuttflag=true;

obj.notifyall();}}

//在抹過黃油的吐司上塗果醬

public void butttoajam() catch (interruptedexception e)

}system.out.println("在抹過黃油的吐司上塗果醬");

maketoaflag=false;

butttoajamflag=true;

obj.notifyall();}}

讓警察崩潰的司機

讓警察崩潰的司機 一名警察要一位超速行駛的男士把車停到路邊,之後開始了下面的問話調查 警察 我能看一下你的駕駛執照嗎?司機 我沒有駕照,因為第五次酒後開車,我的駕照被吊銷了。警察 我可以看看你車子的牌照嗎?司機 這不是我的車,是我偷人家的。警察 車是偷的?司機 對。但是讓我想一想。我想起來了,車主的...

怎樣讓蘭花多發芽

蘭花栽培品種的繁殖一般都是無性繁殖,依靠分株髮苗是蘭花唯一的繁殖方式。讓蘭花多發芽發壯芽是養蘭人的共同願望,也一直是眾蘭友孜孜以求的目標,近年來,蘭友們在前人積累經驗的基礎上不斷地實踐探索 開拓創新,同時引進外國的先進技術,取得了不少成功的經驗。本人暫且拋磚引玉,從以下幾方面同蘭友們進行 怎樣才能提...

怎樣讓自己更優秀

其實一直在想這個問題,斷斷續續,停停走走,也沒好好的總結下,一直要求自己,業餘時間一定要再學習學習,豐富豐富自己,肚子沒墨水,終究別人看不起,自己看不起,一無所得,所以要一直學習,讓自己變的更優秀,那麼,真的什麼都來了,不管你想要什麼。第一,學會本行業所需要的一切知識並有所發展。已故零件大王布魯丹在...