操作系统读者写者问题

操作系统读者写者问题

ID:5618445

大小:47.50 KB

页数:4页

时间:2017-12-20

操作系统读者写者问题_第1页
操作系统读者写者问题_第2页
操作系统读者写者问题_第3页
操作系统读者写者问题_第4页
资源描述:

《操作系统读者写者问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、读者写者问题importjava.lang.Math;classBuffer{privateintbuffer;//定义一个缓冲区bufferprivateintreadCount=0;//定义readCount为目前的读者数目booleanisRead=false;//定义互斥变量isRead,因为刚开始时写者还没有把数据写入,所以为falsebooleanisWrite=true;//定义的互斥变量,因为刚开始时需要学入数据,所以初始状态为truepublicsynchronizedvoidwrite(intn

2、){//定义互斥的访问方法,某一时间只能有一个成员访问此方法,这由synchronized决定,相当于wait(s)和signal(s)合起来while(isRead)//判断当前是否为“读”状态,如果是,则自己调用Object自带的方法wait()阻塞自己try{this.wait();}catch(InterruptedExceptione){//意外处理机制,可以忽略不管}buffer=n;//当开关打开之后,给缓冲区写入数据isWrite=false;//写入完成后,将“写”状态,设置为假,代表此时可以读S

3、ystem.out.println(Thread.currentThread().getName()+"书写了"+buffer);//为了了解程序运行输出写入的数据notify();//唤醒当前所有处于阻塞状态的线程}publicsynchronizedvoidenterRead(){//定义读者读之前的动作,此方法一样得是互斥访问的while(readCount==0&&isWrite)//如果这是第一个读者并且写者正在给缓冲区写入数据,则自己调用wait()阻塞自己try{this.wait();}catch(

4、InterruptedExceptionE){}isRead=true;//锁打开之后,将读设置为真,此时不能进行写操作readCount++;//读者数加一}publicsynchronizedvoidexitRead(){//描述读者退出时的动作readCount--;//读者数目减一if(readCount==0){//最后一个读者退出的时候,将“读”状态置为假isRead=false;}notifyAll();//唤醒所有处于阻塞状态的线程}publicvoidread(){//读者所有的动作,进>>读数>

5、>退出enterRead();System.out.println(""+Thread.currentThread().getName()+"读到数据为"+buffer);exitRead();}}classWriterextendsThread{//定义一个,写者的类,此类为线程继承ThreadprivateBufferbuffer;//写者的成员,为Buffer类publicWriter(Bufferbuffer){this.buffer=buffer;}publicvoidrun(){//写着所具有的动作或者

6、说是行为,随机的写入数据intn=(int)(Math.random()*100);buffer.write(n);}}classReaderextendsThread{//定义一个读者的类privateBufferbuffer;publicReader(Bufferbuffer){this.buffer=buffer;}publicvoidrun(){//读的动作buffer.read();}}publicclassWriterAndReader{//主类publicstaticvoidmain(String[]

7、args){//主方法Bufferbuffer=newBuffer();//一个Buffer类newWriter(buffer).start();//定义了四个写者和四个读者newReader(buffer).start();newWriter(buffer).start();newReader(buffer).start();newWriter(buffer).start();newReader(buffer).start();newWriter(buffer).start();newReader(buffer)

8、.start();}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。