在操作系统课程设计中,老师给了这样一个题目,并且要求以GUI的形式模拟整个操作过程。所以,首先映入我脑海的语言便是JAVA。主意敲定,开始构思,如何用JAVA来巧妙地表现这种机制,尽管Java提供了synchronized,Semaphore等关键词,但在构思过程中依然是困难的。
建立读者类和写者类,建立之后为了实现写者优先需设定五个信号量,然而这五个信号量是在两个类中交替出现的,而且要保证原子性。不得已将这五个类全部放在主类中,设为静态变量。由此在另外两个类应用时很繁琐。
五个信号量:
public static Semaphore readCountSemaphore=new Semaphore(1); //读者数量更改,保持原子性
public static Semaphore writeSemaphore=new Semaphore(1); //写者信号量
public static Semaphore reader_wait=new Semaphore(1); //读者信号量
public static Semaphore first_reader_wait=new Semaphore(1);//第一个读者,为了实现写者优先