定义两个static变量分别记录读和写的进程数
当写进程进来,先判断有没有两个变量,当都为0时才可以执行写,同时置写进程数为1,否则等待
当读进程进来,先判断有没有写进程,如果没有写进程,则执行读操作,同时读进程数加1,否则等待

解决方案 »

  1.   

    被访问的类中设置两个锁对象,如
    public Object readLock = new Object();
    public Object writeLock = new Object();
    假设这个类实例是a。
    在线程类的读方法中对读锁同步:
    public void read(){
      synchronized(a.readLock){
        ......
      }
    }
    在线程类的写方法中对读锁和写锁都同步:
    public void write(){
      synchronized(a.readLock){
        synchronized(a.writeLock){
          ......
        }
      }
    }