這裡我只是簡單實現了這個經典問題的思路與想打,並且書寫的程式也是能正確的執行出合理的答案,希望今後還可以改進程式使之更加完善
思路描述:
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...
生產者 消費者問題
在學習程序互斥中,有個著名的問題 生產者 消費者問題。這個問題是乙個標準的 著名的同時性程式設計問題的集合 乙個有限緩衝區和兩類執行緒,它們是生產者和消費者,生產者把產品放入緩衝區,相反消費者便是從緩衝區中拿走產品。生產者在緩衝區滿時必須等待,直到緩衝區有空間才繼續生產。消費者在緩衝區空時必 須等待...