displayreadwrite.java

来自「英国帝国理工学院电脑系多线程课程教学材料之十一 ---- 读取者与写入者范例」· Java 代码 · 共 50 行

JAVA
50
字号
/********************************************************/
package concurrency.readwrite;

import concurrency.display.*;

class DisplayReadWrite implements ReadWrite {

    StringCanvas display_;
    ReadWrite lock_;
    private int readers = 0;
    private boolean writing = false;

    DisplayReadWrite(StringCanvas t, ReadWrite lock) {
        display_=t;
        lock_=lock;
        setdisplay();
    }

    private void setdisplay(){
	display_.setString("readers= " + String.valueOf(readers)
                        + "  writing= " + (new Boolean(writing)).toString());
    }

     public void acquireRead() throws InterruptedException{
         lock_.acquireRead();
         ++readers;
         setdisplay();
     }

     public void releaseRead() {
         lock_.releaseRead();
         --readers;
         setdisplay();
     }

     public void acquireWrite() throws InterruptedException {
         lock_.acquireWrite();
         writing = true;
         setdisplay();
       }

     public void releaseWrite() {
         lock_.releaseWrite();
         writing = false;
         setdisplay();
     }

 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?