炊事班的战士蒸馒头,每天要保证
100
个馒头才能完成队伍的吃饭任务,蒸的馒头顺序放到馒头筐里。
炊事班战士蒸馒头的同时,陆续会有战士来餐厅就餐——从馒头筐里拿新出锅的馒头。如果此时没有馒头,战士就只能等待馒头出锅方可就餐。
馒头筐不大,最多放置
12
个馒头,而且能保证新出锅的馒头最先被战士拿出。
问题:
1.
请用面向对象的
java
语言描述如上这个问题,注意类的选择,类中属性和方法的确定
2.
使用多线程来模拟蒸馒头和吃馒头的整个过程
3.
使用线程的同步通信机制来满足这样的需求:
1)
馒头出锅的同时如果此时有战士在取馒头,则必须等待战士取出馒头之后方能将馒头入筐
2)
战士拿馒头时如果有新馒头出锅放入筐中,也须等待放完馒头之后方能取食馒头。
3)
如果馒头筐此时已经放满,炊事班的战士则原地休息,等待有战士来吃馒头。发现筐内馒头少于
12
个后,才继续蒸馒头。总共蒸满
100
个馒头后,完成任务,收工休息。
4)
如果馒头筐内没有馒头,则用餐的战士必须等待馒头蒸好后才能取馒头。所有战士共吃完
100
个馒头后,回宿舍休息。