程序模擬生產者 消費者問題

2021-07-25 03:53:14 字數 1136 閱讀 7801

這裡我只是簡單實現了這個經典問題的思路與想打,並且書寫的程式也是能正確的執行出合理的答案,希望今後還可以改進程式使之更加完善

思路描述:

1.生產者程序:產生乙個資料,當要送入緩衝區的時候,要檢查緩衝區是否已滿,若未滿,則可將資料送入緩衝區,並通知消費者程序,否則等待

2.對於消費者程序:當它去取資料的時候,要看緩衝區中是否有資料可以去取,若有則取走乙個資料,並通知生產者程序,否則等待

3.緩衝區是乙個臨界資源,因此,諸程序對緩衝區的操作程式是乙個共享臨界區,所以這裡還有乙個互斥問題

public class question_test 

}class mutex

public void setfull(int full)

public boolean ismutex()

public void setmutex(boolean mutex)

}class customer extends thread

public mutex mtx;

//申請緩衝區

public void p_cus()else

}else

} //釋放緩衝區使用權

public void v_cusmex()

//重寫run方法,呼叫申請與釋放緩衝區函式

public void run() }

class producer extends thread

//訪問快取區互斥判斷當為true表示正在訪問快取區。

public mutex mtx;

//生產乙個產品;

public void p_pro()else

}else }

public void v_promex()

//重寫run方法,呼叫申請與釋放緩衝區函式

這就是模擬出來的效果,希望可以幫助到你理解這個經典的程序排程問題!

生產者消費者問題 JAVA模擬

public class producerconsumer 緩衝區初始化 public static void init static class monitor else catch interruptedexception e public synchronized void removepro...

生產者消費者問題

public class producer consumer class godown public godown int num public synchronized void produce int n catch interruptedexception e curr num n syste...

生產者 消費者問題

在學習程序互斥中,有個著名的問題 生產者 消費者問題。這個問題是乙個標準的 著名的同時性程式設計問題的集合 乙個有限緩衝區和兩類執行緒,它們是生產者和消費者,生產者把產品放入緩衝區,相反消費者便是從緩衝區中拿走產品。生產者在緩衝區滿時必須等待,直到緩衝區有空間才繼續生產。消費者在緩衝區空時必 須等待...