第五次作业
本次作业,需要完成的任务为单部多线程傻瓜调度(FAFS)电梯的模拟。
设计策略
先来先服务的单电梯是一个标准的**"生产者-消费者"模型**。虽然在本次作业中调度器似乎是不必要的,但为了更好地应用"生产者-消费者"模型,并方便下一次作业的扩展,还是应该保留了调度器的概念,将其作为"托盘"来存放还未服务的请求。
显然,读取输入并解析为请求就成为了生产者,而电梯就成为了消费者,而在本次作业中调度器其实只起到了存放共享数据的作用,并没有做任何真正意义上的调度。生产者将请求推入位于调度器里的请求队列里,另一边电梯按照先来先服务的傻瓜调度算法将请求一个个取出来并执行。为了保证访问请求队列的线程安全性,推入和取出请求的方法必须用synchronized关键字上锁。
输入和电梯各是一个线程。当请求队列为空时,电梯wait(),直到一个新的请求被推入请求队列,电梯被唤醒。
程序结构
本次作业结构比较简单,一共四个类:输入、调度器、电梯和主类。输入和电梯两个线程通过调度器中共享数据的方式进行通信。
在度量上可以看出整体比较均衡&#x